To configure the following customizations components in NewStore Associate App, use the NewStore Associate App Configuration API.
Use the Get app configuration method to retrieve the current configuration for Associate App in your business.
Printing in-store hang tags using additional pricebooks
When you enable this customization, NewStore uses the hangtag template to allow associates to print hang tags for in-store items via Associate App.
To enable Associate App to print hang tags:
Set
release_toggles>new_hang_tag_templatetotrue. This allows you to start using thehangtagtemplates in the platform to print hang tags for in-store items.Use the Update app configuration method.
Set
customizations>hang_tag_printing_enabledtotrue.Set
customizations>hang_tag_pricebooksto:["pricebookNameA" ,"pricebookNameB"]or["catalogName.pricebookName1" ,"catalogName.pricebookName2"]where
catalogNameis the name of the catalog, andpricebookNameXis the name of the specific pricebook. For such combinations of catalogs and pricebooks, see the business examples here:store-front-catalog-en.regularandstore-front-catalog-en.discounted, wherestore-front-catalog-enis the name of the catalog, andregularis the name of the specific pricebook for regular pricesstore-front-catalog-enis the name of the catalog, anddiscountedis the name of the specific pricebook for discounted prices
Note
If you specify a value for
pricebookNameand none for the catalog, prices are fetched from the pricebook of the default catalog configured for the store. However, if you specify a value forcatalogName.pricebookName, prices are fetched from this specific pricebook of the specified catalog. If no custom prices from additional pricebooks are required, do not specify a value for the property. The platform then uses the default store pricebook prices automatically.
Example payloads for hang tag templates
If the customizations > hang_tag_pricebooks are configured as [storefront-catalog-gb.regular, storefront-catalog-gb.outlet], you can expect the following sample payload (price, pricebooks, product, store) from Associate App sent to the template service:
Payload response example
{
"content_type": "text",
"locale": "en-gb",
"data": {
"product": {
"brand": "",
"caption": "",
"categories": [
{ "fullPath": "All", "path": ["All"], "position": null },
{
"fullPath": "All > Jackets",
"path": ["All", "Jackets"],
"position": null
}
],
"colorSwatch": {
"altText": "",
"aspectRatio": 0,
"dominantColor": "",
"height": 0,
"title": "",
"url": "",
"width": 0
},
"countryOfOrigin": null,
"currencyCode": "GBP",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque facilisis.",
"extendedAttributes": [
{ "name": "product_created_at", "value": "2024-01-13T10:44:49-08:00" },
{ "name": "variant_created_at", "value": "2024-01-13T10:44:49-08:00" },
{ "name": "product_updated_at", "value": "2024-07-01T11:53:13-07:00" },
{ "name": "variant_updated_at", "value": "2024-07-01T11:53:13-07:00" },
{ "name": "handle", "value": "x-blazer-navy" },
{ "name": "published_at", "value": "2024-01-13T10:44:49-08:00" },
{ "name": "published_scope", "value": "web" },
{ "name": "fulfillment_service", "value": "manual" },
{ "name": "final_sale", "value": "false" },
{ "name": "smart_sku", "value": "A-01-234-567-S" }
],
"externalIdentifiers": {
"ean13": "198871193558",
"isbn": "198871193558",
"sku": "A-01-234-567-S",
"upc": "198871193558"
},
"gtin": "",
"images": [
{
"altText": "Dodici X Blazer - Navy",
"aspectRatio": 0.1234567,
"dominantColor": "#000080",
"height": 1481,
"identifier": "p/dodici/1a2b3c4d5e6f7g",
"isMain": true,
"title": "",
"url": "https://some.url/dodici/1a2b3c4d5e6f7g.jpg",
"width": 985
}
],
"inventoryTracked": true,
"isAvailable": true,
"isPreorder": false,
"keywords": ["blazer", "blazers", "jacket", "clothing", "color-navy"],
"mainCategoryFullPath": "All > Jackets",
"mainCategoryPath": ["All", "Jackets"],
"mainCategoryPosition": null,
"markdownPrice": null,
"material": "",
"onlineFrom": null,
"onlineTo": null,
"preorderStart": null,
"price": 130,
"productHtsNumber": "",
"productId": "12345",
"scheduleB": "",
"serializedInventory": false,
"shippingDimensionHeight": 1,
"shippingDimensionLength": 1,
"shippingDimensionUnit": "cm",
"shippingDimensionWidth": 1,
"shippingWeightUnit": "lb",
"shippingWeightValue": 0,
"sku": "A-01-234-567-S",
"taxClassId": "PC012345",
"templateId": "",
"title": "X Blazer - Navy S",
"variablePricing": false,
"variantGroupId": "12334567890",
"variationAdditional1Name": "fit",
"variationAdditional1Value": "",
"variationAdditional2Name": "",
"variationAdditional2Value": "",
"variationAttributes": {
"variationAdditional1Name": "fit",
"variationAdditional1Values": null,
"variationAdditional2Name": "",
"variationAdditional2Values": null,
"variationColorSwatches": {},
"variationColorValues": null,
"variationSizeValues": ["S", "M"]
},
"variationColorValue": "",
"variationSizeGender": "",
"variationSizeSystem": "",
"variationSizeType": "",
"variationSizeValue": "S",
"variations": [
{
"colorSwatch": {
"altText": "",
"aspectRatio": 0,
"dominantColor": "",
"height": 0,
"title": "",
"url": "",
"width": 0
},
"currencyCode": "GBP",
"isAvailable": true,
"price": 130,
"productId": "12345",
"variationAdditional1Name": "fit",
"variationAdditional1Value": "",
"variationAdditional2Name": "",
"variationAdditional2Value": "",
"variationColorValue": "",
"variationSizeGender": "",
"variationSizeSystem": "",
"variationSizeType": "",
"variationSizeValue": "S"
},
{
"colorSwatch": {
"altText": "",
"aspectRatio": 0,
"dominantColor": "",
"height": 0,
"title": "",
"url": "",
"width": 0
},
"currencyCode": "GBP",
"isAvailable": true,
"price": 130,
"productId": "12346",
"variationAdditional1Name": "fit",
"variationAdditional1Value": "",
"variationAdditional2Name": "",
"variationAdditional2Value": "",
"variationColorValue": "",
"variationSizeGender": "",
"variationSizeSystem": "",
"variationSizeType": "",
"variationSizeValue": "M"
}
]
},
"price": {
"currencyCode": "GBP",
"productId": "12345",
"traits": [""],
"value": 72.5
},
"store": {
"storeId": "012",
"label": "012_Some_Store",
"catalog": "storefront-catalog-gb",
"locale": "en-gb",
"timezone": "Europe/London",
"deliveryZipCodes": [],
"physicalAddress": {
"addressLine1": "Some address",
"countryCode": "GB",
"addressLine2": "",
"province": null,
"state": "Some State in GB",
"zipCode": "1234 AB",
"city": "City in GB",
"latitude": 12.34567,
"longitude": -1.23456
},
"displayPriceUnitType": "net",
"taxIncluded": true,
"revision": 4,
"activeStatus": true,
"businessHours": [
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 0,
"earliestPickUp": null,
"latestPickUp": null
},
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 1,
"earliestPickUp": null,
"latestPickUp": null
},
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 2,
"earliestPickUp": null,
"latestPickUp": null
},
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 3,
"earliestPickUp": null,
"latestPickUp": null
},
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 4,
"earliestPickUp": null,
"latestPickUp": null
},
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 5,
"earliestPickUp": null,
"latestPickUp": null
},
{
"fromTime": "10:00",
"toTime": "20:00",
"weekday": 6,
"earliestPickUp": null,
"latestPickUp": null
}
],
"shippingProviderInfo": {},
"pricebook": "outlet",
"updatedAt": "2024-01-13T10:44:49-08:00",
"createdAt": "2024-01-13T10:44:49-08:00",
"queuePrioritization": [
{
"priority": 1,
"shippingType": "in_store_pick_up",
"displayPriorityType": "priority"
}
],
"shippingAddress": {
"addressLine1": "Shipping address one",
"countryCode": "GB",
"addressLine2": "",
"province": null,
"state": "State one",
"zipCode": "Zip code one",
"city": "City one",
"latitude": 12.34567,
"longitude": -1.23456
},
"managerId": null,
"imageUrl": null,
"phoneNumber": "+44 (1234) 567890",
"divisionName": null,
"taxId": null,
"giftWrapping": false,
"supportedShippingMethods": ["traditional_carrier", "in_store_pick_up"]
},
"pricebooks": {
"storefront-catalog-gb.outlet": {
"currencyCode": "GBP",
"productId": "12345",
"traits": [""],
"value": 82.5
},
"storefront-catalog-gb.regular": {
"currencyCode": "GBP",
"productId": "12345",
"traits": [""],
"value": 199
}
}
}
}With this payload, hangtag templates can be customized and the template service will return the customized template output to Associate App.
A sample customization template example with product label, size, productId, struck out regular price, outlet price, and a product barcode is provided here:
Customization template example
{%- import 'tenant' as tenant -%}
{%- set strings = {
'en_US': { 'color': 'Color', 'size': 'Size', 'sku': 'sku', 'price': 'Price', 'outlet_price': 'Outlet Price' },
'en_GB': { 'color': 'Color', 'size': 'Size', 'sku': 'sku', 'price': 'Price', 'outlet_price': 'Outlet Price' }
} -%}
{%- set currency_symbol_map = {
'AUD': 'A$',
'USD': '$',
'CAD': '$',
'EUR': '€',
'GBP': '£',
'JPY': 'Â¥',
'DKK': 'Kr.',
'SEK': 'kr',
} -%}
^XA
^CI28
^CF0,18
^FB200,2,,
^FO56,20^FD{{product.title}}^FS
{%- set y_position = 40 %}
{%- if product.title | length > 28 -%}
{%- set y_position = y_position + 20 %}
{%- endif -%}
^FO55,{{ y_position }}^FD{{product.externalIdentifiers.sku}}^FS
{%- set y_position = y_position + 20 %}
{%- if product.variationColorValue -%}
^FO56,{{ y_position }}^FD{{ strings[locale].color }}: {{ product.variationColorValue | upper }}^FS
{%- set y_position = y_position + 20 %}
{%- endif -%}
{%- set y_position = y_position + 5 %}
{%- if store.label in tenant.outlet_store_labels -%}
^FO56,{{ y_position }}^FD{{strings[locale].price}}: {{ currency_symbol_map[pricebooks['storefront-catalog-en.regular'].currencyCode] }}{{ "{:.2f}".format(pricebooks['storefront-catalog-en.regular'].value) }}^FS
{%- set static_text_length = strings[locale].price | length %}
{%- set currency_symbol_length = currency_symbol_map[pricebooks['storefront-catalog-en.regular'].currencyCode] | length %}
{%- set formatted_price_length = "{:.2f}".format(pricebooks['storefront-catalog-en.regular'].value) | length %}
{%- set price_length = (static_text_length + currency_symbol_length) * 0.75 + formatted_price_length * 8 %}
^FO105,{{ y_position + 7 }}^GB{{ price_length }},2,2^FS
^FO56,{{ y_position + 20 }}^FD{{strings[locale].outlet_price}}: {{ currency_symbol_map[pricebooks['storefront-catalog-en.outlet'].currencyCode] }}{{ "{:.2f}".format(pricebooks['storefront-catalog-en.outlet'].value) }}^FS
{% endif %}
{%- if store.label not in tenant.outlet_store_labels -%}
^FO55,{{ y_position }}^FD{{strings[locale].price}}: ^FS
^FO102,{{ y_position }}^FD{{currency_symbol_map[price.currencyCode]}}{{price.value}}^FS
{% endif %}
^FO55,{{ y_position + 45 }}
^BY2
^BUN,60,Y,N,Y
^FD{{product.externalIdentifiers.upc}}^FS
^XZFor more information on customizing a hangtag template, see Customizing a template.
Enabling priority orders in store fulfillment
When you enable this feature, NewStore allows the store associates to see any priority orders waiting to be fulfilled.
To enable Associate App to show priority orders:
Use the Update app configuration method.
Set
release_toggles>priority_orders_enabledtotrue.
Printing gift receipts
To enable associates in the store to print receipts for gifts in an order via Associate App:
Use the Update app configuration method.
Set
customizations>gift_receipt_printing_enabledtotrue.
Note
Gift receipts include the address of the store where the order was placed and not the store where the gift receipt was printed.
Configuring a PIN for gift cards
When a customer pays with a gift card, you can configure Associate App to ask associates to enter a PIN for the gift card to complete the checkout process. See Choosing a payment option.
Important
When you enable this customization, gift card payments are not allowed without entering a PIN for the card.
Use the Update app configuration method.
Set
customizations>gift_card_pintotrue.
When customers pay with a gift card, associates in the store now must enter the PIN for the card before checkout can be completed in Associate App.
Configuring gift messages
If required for your business, you can enable associates to add the option to add a gift message for items in an order.
To add a gift message:
In the
Cartscreen for the order, tapMore>Gift Message.In the dialog box that appears, add a gift message that will be applied to all items in the current order or cart.
Important
If you don't see the option available in the menu, the plugin may not have been enabled yet. To enable the plugin, see the cart management plugins.
Enabling switching to test mode
To enable the associates to switch from a live environment to test mode in Associate App and back:
Use the Update app configuration method.
Set
customizations>stage_switch_enabledtotrue.
Important
Additionally, the associate must also have the
Allow switch to Test Modepermission enabled via NewStore Omnichannel Manager. See Permissions for NewStore Associate App.
Configuring cart management plugins
Use this configuration to manage plugins that control options available to associates in Associate App, in the More > Manage Cart screen. For example, you can remove coupon from the list of plugins to remove the Redeem Coupon option from the Manage Cart screen in Associate App.
To manage cart management plugins in Associate App:
Use the Update app configuration method.
In
customizations>cart_management, specify the plugins you want to use in the app, in the form of an array. Possible values are:orderDiscountitemDiscountcouponaddDeliveryautomaticDiscountaddGiftMessage
For example, see this example for specifying cart management plugins:
{ "cart_management": [ "orderDiscount", "itemDiscount", "coupon", "addDelivery", "automaticDiscount", "addGiftMessage" ] }
Disabling contact options
Use this configuration to disable the options available to associates in Associate App to contact customers in your business. After this configuration has been set up, the buttons to contact a customer via phone, email, or SMS in Associate App is disabled in the customer profile screen in Customers.
To disable contact options in Associate App:
Use the Update app configuration method.
In
customizations>disabled_contact_buttons, specify the contact options you want to disable in the app, in the form of an array. Possible values are:CALLSMSMAIL
Important
The values you specify in the array are case-sensitive.
For example, see this payload to disable the options for associates to contact the customer via phone or SMS:
{ "disabled_contact_buttons": [ "CALL", "SMS", ] }Note
In this example, associates can still contact the customer via email.
Related topics