{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-solution-portal/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Voyado Loyalty Adapter","description":"Home of the Norce Commerce documentation"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"voyado-loyalty-adapter"},"children":["Voyado Loyalty Adapter"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview"},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Voyado Loyalty Adapter integrates Voyado Engage with Norce Checkout (NCO),"," ","enabling merchants to apply Voyado loyalty benefits to a Norce Checkout order."," ","Voyado Engage is a customer loyalty and marketing-automation platform."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unlike payment adapters, the Voyado Loyalty Adapter does not take payments. It"," ","participates in the checkout flow by:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Linking a Voyado contact to the Norce Checkout order as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.loyalty"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Exposing the promotions and reward vouchers available for that contact in"," ","Voyado."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Writing applied promotions and reward vouchers back to the order so that"," ","the Norce Adapter can translate them into discount line items in Norce"," ","Commerce."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The adapter is identified by the adapter id ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado_checkout_adapter"]}," and is"," ","configured per merchant/channel in Norce Checkout Admin."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"capabilities-and-supported-flows"},"children":["Capabilities and Supported Flows"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"supported-operations"},"children":["Supported Operations"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Operation"},"children":["Operation"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"HTTP"},"children":["HTTP"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Purpose"},"children":["Purpose"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Set customer loyalty"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/loyalty/{orderId}/set"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Validates a Voyado contact and stores it on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.id"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["provider = \"Voyado\""]},". Returns the contact together with available promotions and reward vouchers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Get promotions"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v1/promotions/{orderId}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Returns the active Voyado promotions for the contact on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.id"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Apply promotion"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/promotions/{orderId}/{promotionId}/apply"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Adds the selected Voyado promotion to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.promotions"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Remove promotion"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/promotions/{orderId}/{promotionId}/remove"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Removes a previously applied Voyado promotion from the order."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Get reward vouchers"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v1/rewardvouchers/{orderId}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Returns the available Voyado reward vouchers for the contact on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.id"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Apply reward voucher"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/rewardvouchers/{orderId}/{voucherId}/apply"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Adds the selected reward voucher to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.rewardVouchers"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Remove reward voucher"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/rewardvouchers/{orderId}/{voucherId}/remove"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Removes a previously applied reward voucher from the order."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"integration-type"},"children":["Integration Type"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Loyalty / CRM integration; not a payment or shipping adapter."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Runs inside the normal checkout flow (not as a post-purchase notification)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The frontend is responsible for letting the customer identify themselves in"," ","Voyado and for calling the adapter with the resulting Voyado contact id."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"limitations"},"children":["Limitations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The adapter does not register receipts or transactions in Voyado. Purchase"," ","data is not pushed to Voyado by this adapter. Receipt/transaction"," ","synchronization with Voyado is currently solved by third-party integration"," ","partners such as ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://nexergroup.com/services/unified-commerce/commerce-integration-platform/"},"children":["Nexer Group's Commerce Integration"," ","Platform"]},","," ","not by Norce Checkout."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apply"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["remove"]}," for promotions and reward vouchers all require"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.id"]}," to be set on the Norce order first via the"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loyalty/{orderId}/set"]}," endpoint."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reward vouchers require ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]}," to be configured. A voucher"," ","amount that does not match any configured level fails with"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["configuration-error"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Promotions without an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," and without a usable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM"]}," redemption"," ","channel value fail to apply with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["promotion-external-id-missing"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites"},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"from-voyado"},"children":["From Voyado"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To use the Voyado Loyalty Adapter you need the following from Voyado Engage:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Voyado Engage tenant with API access enabled."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Voyado API key (sent in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apikey"]}," header) that allows reading contacts,"," ","promotion assignments, and reward vouchers (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api/v3/contacts/{id}"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api/v3/promotion-assignments"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["api/v3/reward-vouchers/available"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your Voyado client identifier, used in the API URL"," ","(",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{client}.voyado.com"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{client}.staging.voyado.com"]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"from-norce"},"children":["From Norce"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Norce Checkout enabled for your Norce Commerce account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A configured merchant and channel in Norce Checkout Admin."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Norce Adapter configured on the same order so that loyalty promotions"," ","and reward vouchers can be translated into Norce Commerce discount lines."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Norce discount ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," values that correspond to each configured"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevel.maxAmount"]},", and to any promotion that is expected to be"," ","redeemed through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"environments"},"children":["Environments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Voyado Loyalty Adapter URLs follow the standard NCO pattern:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Adapter URL Pattern"},"children":["Adapter URL Pattern"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{slug}.api-se.norce.tech/checkout/voyado-adapter"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Stage"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{slug}.api-se.stage.norce.tech/checkout/voyado-adapter"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Playground"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{slug}.api-se.playground.norce.tech/checkout/voyado-adapter"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{slug}"]}," with your organization's slug provided by Norce."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Voyado API environments used by the adapter:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Voyado API URL Pattern"},"children":["Voyado API URL Pattern"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{client}.voyado.com"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Staging"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{client}.staging.voyado.com"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{client}"]}," with your Voyado client identifier."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configuration-in-norce-checkout-admin"},"children":["Configuration in Norce Checkout Admin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Voyado Loyalty Adapter is configured per merchant/channel in Norce Checkout"," ","Admin. Configuration is validated against the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado_adapter"]}," JSON schema"," ","published by the adapter."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"required-configuration"},"children":["Required configuration"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["adapter.internalUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Internal URL of the Voyado Loyalty Adapter, used by other Norce services."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["adapter.publicUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Public URL of the Voyado Loyalty Adapter, used by the storefront."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiSettings.apiUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Base URL of the Voyado Engage API. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{client}.staging.voyado.com"]}," for test and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://{client}.voyado.com"]}," for production."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiSettings.apiKey"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Voyado Engage API key. Sent as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apikey"]}," header on every outgoing call to Voyado."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"reward-voucher-levels"},"children":["Reward voucher levels"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]}," maps Voyado reward vouchers to Norce discount"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," values based on the voucher amount."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels[].maxAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Upper bound (inclusive) of the voucher amount that this level applies to."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels[].externalId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Norce discount ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," that is written to the order when a voucher whose amount falls within this level is applied."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Levels are evaluated in ascending ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maxAmount"]}," order. The first level whose"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maxAmount"]}," is greater than or equal to the voucher amount wins. If no level"," ","matches the voucher amount, applying the voucher fails with"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["configuration-error"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example configuration:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"$schema\": \"https://{slug}.api-se.playground.norce.tech/checkout/voyado-adapter/openapi/v1/schemas/voyado_adapter.json\",\n  \"id\": \"voyado_adapter\",\n  \"active\": true,\n  \"adapter\": {\n    \"internalUrl\": \"https://voyado-adapter.checkout.playground.internal.norce.tech\",\n    \"publicUrl\": \"https://{slug}.api-se.playground.norce.tech/checkout/voyado-adapter\"\n  },\n  \"apiSettings\": {\n    \"apiUrl\": \"https://yourclient.voyado.com\",\n    \"apiKey\": \"***\"\n  },\n  \"rewardVoucherLevels\": [\n    { \"maxAmount\": 100, \"externalId\": \"VOYADO_VOUCHER_100\" },\n    { \"maxAmount\": 250, \"externalId\": \"VOYADO_VOUCHER_250\" },\n    { \"maxAmount\": 500, \"externalId\": \"VOYADO_VOUCHER_500\" }\n  ]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"matching-voyado-codes-to-norce-commerce-promotions"},"children":["Matching Voyado codes to Norce Commerce promotions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," that the Voyado Loyalty Adapter writes to the order"," ","(from a Voyado promotion or from a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels[].externalId"]},") must"," ","exist as a Promotion in Norce Commerce Admin. Without a matching Promotion,"," ","the order still carries the loyalty entry but no discount line item is"," ","generated in Norce Commerce."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For each expected ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]},", create a Promotion in Norce Commerce"," ","Admin with:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Status"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Active"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Code"]}," — a unique code for the promotion (free-form, for example"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RewardVoucher-600"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Requirement"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["If the external discount code is <externalCode>"]},","," ","where ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<externalCode>"]}," is exactly one of:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Voyado promotion ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}," of the Voyado promotion's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM"]}," redemption channel (when"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," is empty)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels[].externalId"]}," value from the adapter"," ","configuration (for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VOYADO_VOUCHER_100"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RewardVoucher-600"]},")."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Effect"]}," — the discount that should be applied when the code matches"," ","(for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["THEN Discount all in basket with 600,00 SEK incl. VAT"]},")."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a Voyado promotion or reward voucher is applied through the Voyado"," ","Loyalty Adapter, the Norce Adapter looks for a Norce Commerce Promotion"," ","whose requirement matches the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," written on the order and adds"," ","the corresponding discount line item to the cart. If no matching Promotion"," ","exists, no discount is applied."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-reward-voucher-promotion-in-norce-commerce-admin"},"children":["Example: reward voucher Promotion in Norce Commerce Admin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A Norce Commerce Promotion that matches a Voyado reward voucher of"," ","600 SEK (mapped by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId = \"RewardVoucher-600\""]},")"," ","might look like this in Norce Commerce Admin:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/norce-admin-reward-voucher-promotion.be67c35f8f37743accb2844f0669d4573f09bf50bd4cc2d5598877acbfc9657e.35f8b9b7.png","alt":"Norce Commerce Admin Promotion with Requirement 'IF External discount code is RewardVoucher-600' and Effect 'THEN Discount all in basket with 600,00 SEK incl. VAT'"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key fields:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Status: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Active"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requirement: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IF External discount code is RewardVoucher-600"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Effect: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["THEN Discount all in basket with 600,00 SEK incl. VAT"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-voyado-promotion-promotion-in-norce-commerce-admin"},"children":["Example: Voyado promotion Promotion in Norce Commerce Admin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A Norce Commerce Promotion that matches the Voyado ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NEWCUSTOMER"]}," promotion"," ","(whose ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," resolves to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NEWCUSTOMER"]}," either from the Voyado"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," or from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM"]}," redemption channel value) might look like"," ","this in Norce Commerce Admin:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/norce-admin-voyado-promotion.97497cf425b3a2fca1500eb7c573f2f6747bf51f13ae2617f1b095ff93228a19.35f8b9b7.png","alt":"Norce Commerce Admin Promotion with Requirement 'IF External discount code is NEWCUSTOMER' and Effect 'THEN Discount all in basket with 10,00 %'"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key fields:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Status: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Active"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requirement: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IF External discount code is NEWCUSTOMER"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Effect: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["THEN Discount all in basket with 10,00 %"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-the-voyado-loyalty-adapter-uses-the-norce-order"},"children":["How the Voyado Loyalty Adapter uses the Norce order"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The adapter reads and writes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty"]}," on the Norce Checkout"," ","order:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.id"]}," — Voyado contact id. Set by"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/loyalty/{orderId}/set"]}," and required by every other endpoint."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.provider"]}," — always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"Voyado\""]}," when set by this"," ","adapter."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.promotions[]"]}," — list of applied Voyado promotions."," ","Each entry contains the Voyado ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", the resolved ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]},", and the"," ","promotion ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.rewardVouchers[]"]}," — list of applied reward"," ","vouchers. Each entry contains the Voyado ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voucherNumber"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name"]},", and"," ","the Norce discount ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," resolved from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Applied promotions and reward vouchers are written to the order, and the"," ","Norce Adapter then converts them to discount line items in Norce Commerce. The"," ","Voyado Loyalty Adapter itself does not modify the cart totals."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"promotion-externalcode-resolution"},"children":["Promotion externalCode resolution"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When applying a promotion, the adapter picks an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," to write to the"," ","order using the following rule:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the Voyado ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Promotion.externalId"]}," is non-empty, it is used as-is."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Otherwise, the adapter looks up the redemption channel with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type == \"ECOM\""]}," ","on the promotion and uses its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value"]}," (string or number)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If neither is available, applying the promotion fails with"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["promotion-external-id-missing"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"reward-voucher-externalcode-resolution"},"children":["Reward voucher externalCode resolution"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When applying a reward voucher, the adapter picks an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," based on"," ","the configured ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]},":"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The voucher's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value.amount"]}," is compared against ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]}," ","sorted by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maxAmount"]}," ascending."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," of the first level with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maxAmount >= voucher.value.amount"]}," ","is used."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If no level matches, applying the voucher fails with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["configuration-error"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"calls-to-voyado-engage"},"children":["Calls to Voyado Engage"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Voyado Loyalty Adapter calls the following Voyado Engage endpoints. All"," ","calls include the configured ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKey"]}," as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apikey"]}," header."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Voyado endpoint"},"children":["Voyado endpoint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Validate Voyado contact when setting loyalty"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET api/v3/contacts/{contactId}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["List active promotion assignments"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET api/v3/promotion-assignments?contactId={contactId}"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["List available reward vouchers"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET api/v3/reward-vouchers/available?contactId={contactId}"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]}," response from Voyado is translated into ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado-contact-not-found"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-handling-and-troubleshooting"},"children":["Error Handling and Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"error-codes"},"children":["Error codes"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"When it is returned"},"children":["When it is returned"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado-contact-not-found"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The Voyado contact id used on the request does not exist in the configured Voyado tenant."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado-promotion-not-found"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The promotion id on an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apply"]}," call is not in the list returned by Voyado for this contact."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado-voucher-not-found"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The voucher id on an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apply"]}," call is not in the list returned by Voyado for this contact."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loyalty-id-missing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The order does not have ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer.loyalty.id"]}," set. Call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/loyalty/{orderId}/set"]}," first."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["promotion-external-id-missing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The promotion has no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," and no usable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM"]}," redemption channel value, so no Norce discount code can be resolved."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["promotion-not-applied"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Writing the promotion to the order failed validation on the order service."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voucher-invalid"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The reward voucher is already redeemed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voucher-not-applied"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Writing the reward voucher to the order failed validation on the order service."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["configuration-error"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The adapter configuration is missing or the voucher amount does not match any configured ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevel"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado-bad-request"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The promotion or voucher is already applied to the order, or is already redeemed in Voyado."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"troubleshooting-checklist"},"children":["Troubleshooting checklist"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiSettings.apiUrl"]}," points to the correct Voyado environment"," ","(",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["staging.voyado.com"]}," in test, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voyado.com"]}," in production)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiSettings.apiKey"]}," is valid and has permissions for the"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contacts"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["promotion-assignments"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reward-vouchers/available"]}," ","endpoints."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order.customer.loyalty.id"]}," is present before calling promotion or"," ","reward-voucher endpoints."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that Voyado promotions intended for ECOM have either an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalId"]}," ","or a non-empty ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ECOM"]}," redemption channel value."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rewardVoucherLevels"]}," covers every voucher amount used by your"," ","Voyado reward setup."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify that every ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["externalCode"]}," written to the order has a matching"," ","Promotion in Norce Commerce Admin whose requirement is"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["If the external discount code is <externalCode>"]},". Without it, no"," ","discount line item is created in Norce Commerce even though the loyalty"," ","entry is present on the order."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"links-and-references"},"children":["Links and References"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"norce-checkout-api-references"},"children":["Norce Checkout API References"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/nco/openapi/order-read"},"children":["NCO Order API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/nco/openapi/configuration-read"},"children":["NCO Configuration API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/nco/openapi/notification-read"},"children":["NCO Notification API"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"norce-checkout-overview"},"children":["Norce Checkout Overview"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/solution-portal/nco/introduction/overview"},"children":["Norce Checkout Introduction"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-portal/app-development/nco/working-with-the-nco-purchase-process"},"children":["Working with Norce Checkout"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/solution-portal/nco/providers/loyalty-adapters"},"children":["Loyalty Adapters Overview"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-portal/app-development/nco/adapters/voyado-loyalty-adapter"},"children":["Voyado Loyalty Adapter Developer Guide"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"external-documentation"},"children":["External Documentation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://voyado.com/"},"children":["Voyado Engage"]}," (contact Voyado for API documentation)"]}]}]},"headings":[{"value":"Voyado Loyalty Adapter","id":"voyado-loyalty-adapter","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Capabilities and Supported Flows","id":"capabilities-and-supported-flows","depth":2},{"value":"Supported Operations","id":"supported-operations","depth":3},{"value":"Integration Type","id":"integration-type","depth":3},{"value":"Limitations","id":"limitations","depth":3},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"From Voyado","id":"from-voyado","depth":3},{"value":"From Norce","id":"from-norce","depth":3},{"value":"Environments","id":"environments","depth":2},{"value":"Configuration in Norce Checkout Admin","id":"configuration-in-norce-checkout-admin","depth":2},{"value":"Required configuration","id":"required-configuration","depth":3},{"value":"Reward voucher levels","id":"reward-voucher-levels","depth":3},{"value":"Matching Voyado codes to Norce Commerce promotions","id":"matching-voyado-codes-to-norce-commerce-promotions","depth":2},{"value":"Example: reward voucher Promotion in Norce Commerce Admin","id":"example-reward-voucher-promotion-in-norce-commerce-admin","depth":3},{"value":"Example: Voyado promotion Promotion in Norce Commerce Admin","id":"example-voyado-promotion-promotion-in-norce-commerce-admin","depth":3},{"value":"How the Voyado Loyalty Adapter uses the Norce order","id":"how-the-voyado-loyalty-adapter-uses-the-norce-order","depth":2},{"value":"Promotion externalCode resolution","id":"promotion-externalcode-resolution","depth":3},{"value":"Reward voucher externalCode resolution","id":"reward-voucher-externalcode-resolution","depth":3},{"value":"Calls to Voyado Engage","id":"calls-to-voyado-engage","depth":2},{"value":"Error Handling and Troubleshooting","id":"error-handling-and-troubleshooting","depth":2},{"value":"Error codes","id":"error-codes","depth":3},{"value":"Troubleshooting checklist","id":"troubleshooting-checklist","depth":3},{"value":"Links and References","id":"links-and-references","depth":2},{"value":"Norce Checkout API References","id":"norce-checkout-api-references","depth":3},{"value":"Norce Checkout Overview","id":"norce-checkout-overview","depth":3},{"value":"External Documentation","id":"external-documentation","depth":3}],"frontmatter":{"checkout_path":"Norce Checkout (NCO)","execution_domain":"NCO Order API / NCO Adapters","product_area":"Checkout","product_component":"NCO","seo":{"title":"Voyado Loyalty Adapter"}},"lastModified":"2026-04-23T13:16:48.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/solution-portal/nco/providers/voyado","userData":{"isAuthenticated":false,"teams":["anonymous"]}}