Voyado Adapter (Deprecated)

Deprecated

Some Norce [Storm] Adapters are deprecated in Norce Commerce is replaced by Other services or solutions.

Read about it here.

Voyado is an advanced CRM and loyalty service that is integrated with Norce [Storm].

Responsibilites

When using this adapter, it is assumed that Voyado is the master of customer information and that customers can be added from several channels, not just eCommerce.

Supported functionality

  • Create Voyado Contacts from Norce [Storm] Customers. Contacts will be created as a member contact type in Voyado.
  • Register Voyado Transactions from Norce [Storm] invoices.
  • Provide Norce [Storm] products to Voyado.

Not supported

  • Register Voyado Transactions from Norce [Storm] orders .
  • Apply Voyado Promotions, Rewards or Vouchers to Norce orders (through baskets). Since Norce is a headless platform the reaction to customer actions is handled by a frontend and commerce app, and it is from here these use cases are handled. The promotions, rewards or vouchers is fetched directly from Voyado’s API, presented/chosen and applied to the basket in Storm.
  • Trigger email notifications from Norce using Voyado. Handling email notifications is done directly in Voyado.
  • Integrate Companies with Voyado. Only Customer entities is created and mapped to Voyado Contacts, the adapter does not support company mapping.

Scnenarios

Customer creation in Voyado

Customer swimlane

  1. Create Customer when a purchase is happening : When an order is created, the app should also call RegisterCustomer (with the flag exportToVoyado = true ) which registers the customer as a contact in Voyado. If a contact already exists in Voyado, it will be updated.
  2. Create Customer when a visitor wants to register for membership : A call to RegisterCustomer (with the flag exportToVoyado = true ) should also register the contact in Voyado, when no order is placed. If the customer already exists in Norce, it will be updated with the flag (and other information you pass in) and sent to Voyado.
  3. A contact is created in Voyado and wants a login : When a contact is created in Voyado without the involvement of Norce and if the customer wants a login on the site, an email with an link to a certain page on the commerce app, that resolved who it is and register the Customer (with the flag exportToVoyado = true ) in Norce.
warning

The Customer is only exported to Voyado when the customer flag “exportToVoyado” is set.

Data mappings

Norce [Storm] (Customer) Voyado (Contact) Note
Customer.CrmId contactId Empty CrmId may not mean that the contact does not exists in Voyado. Only that there is no link (yet).
Customer.FirstName attributes.firstName
Customer.LastName attributes.lastName
Customer.EmailAddress attributes.email
Customer.PhoneNumber / Customer.CellphoneNumber attributes.mobilePhone We first check PhoneNumber, if it is empty then we will use CellphoneNumber. If the Phonenumber is already registerd in Voyado, it is removed in the import.
CustomerAddress.AddressLine1 + " " + CustomerAddress.AddressLine2 attributes.street CustomerAddress is the invoice Address for the customer.
CustomerAddress.ZipCode attributes.zipCode
CustomerAddress.City attributes.city
CustomerAddress.SSN attributes.SocialSecurityNumber
customerFlag[Code="AcceptsEmail"] preferences.acceptsEmail
customerFlag[Code="AcceptsPostal"] preferences.acceptsPostal
customerFlag[Code="AcceptsSms"] token
Name preferences.acceptsSms
Additional data to Voyado contact

If you need to add more fields to the contact in Voyado, you can create the cantact yourself at registration (using the Voyado API), and add the Voyado contact Id to the CrmId field on the Customer object when you call RegisterCustomer in Norce [Storm]. If a CrmId exists, the Adapter will not try to create the contact again.

Transaction registrations in Voyado

Transaction swimlane

  1. An invoice is created from the ERP in Norce [Storm]: When an invoice (Receipt) is created in Norce, the Voyado adapter will register the transaction in Voyado.

Data mappings

Norce [Storm] (Invoice) Voyado (Receipt) Note
CrmId/buyerEmail contact.MatchKey If buyerCustomer has CrmId, we will use it. Otherwise we will use the buyerEmail set on the basket.
Fixed value: “ContactId” or “Email”. contact.MatchKeyType If buyerCustomer has CrmId, we will use ContactId. Otherwise we will match by Email.
StoreId set on the channel StoreExternalId
Invoice.InvoiceNo UniqueReceiptId
Invoice.ReferenceOrderId ReceiptNumber
Invoice.InvoiceDate CreatedDate
calculated value from Invoice.CurrencyId Currency
sum of all GrossPaidPrice on items TotalGrossPrice
Invoice.Vat TotalTax
Name PaymentMethod We create one paymentmethod, and put the whole price on it with the payment type card.
fixed value:“card” PaymentMethod.Type
TotalGrossPrice PaymentMethod.Value same value as we set on the parent.
Each InvoiceItem in Invoice Items[]
fixed value: “PURCHASE” item.Type
invoiceItem.PartNo item.Sku
invoiceItem.Quantity item.Quantity
invoiceItem.PriceSale item.GrossPaidPrice inclusive VAT
calculated from pricesale and vatRate item.TaxAmount
invoiceItem.VatRate item.TaxPercent
invoiceItem.PartNo item.ArticleNumber
invoiceItem.ProductName/invoiceItem.PartNo item.ArticleName ProductName if it exist, otherwise PartNo
fixed value: “true” item.AwardBonus
created if invoiceItem.DiscountAmount is larger than 0 item.Discounts
invoiceItem.DiscountAmount discount.Value

Product integration from Norce to Voyado

Products can be sent to Voyado through a regular Google Shopping feed, which then is mapped to the Voyado product format. Please contact Voyado to get this done. If you don’t have have a Google Shopping Feed, please contact Norce.

Configurations

Channel Configuration

First, you need to add a Voyado channel. On the channel page, create a new Channel with the type: ”Voyado”. Enter a name, and fill the Settings for Voyado.

  • API key: Api key to the rest endpoint. eg: 26013e85-f1e7-4345-93ac-15bea14cec3d
  • Url: url to the rest endpoint eg: stormdemo.staging.voyado.com
  • Store Id: The store Id in Voyado that represents the store used by Norce. eg: 1

Channel Settings

Customer Configuration

Under Customers/Flags add a new Flag Group. Set the name to Voyado and select the “Is multiple” checkbox.

Add 4 new flags in under the new Flag Group with the codes:

  • acceptsEmail
  • acceptsSms
  • acceptsPostal
  • exportToVoyado

Check the box “Can be set on customer” and un-check the rest.

Implementation

How to implement the Voyado Adapter to your solution.

Customer creation

Set the exportToVoyado flag to the customer in Norce and it will be exported. When the customer has been exported, the flag it will be cleared, and the CrmId will be updated with the Id from Voyado. If the email-address is already registered in Voyado, it will not be exported, but the CrmId will be updated in Norce.

The customer will not be exported if the customer already has a CrmId. If you need to do this, you must removed the CrmId manually in Admin first.

Fetching contact information from Voyado

This is not done through Norce [Storm] or the adapter, but by interacting with Voyado´s API directly. There is a special Id reserved for CRM systems on the customer entity in the Storm API - the CrmId - that can be used to look up the customer in Voyado. This field is by default hidden in the Admin UI and needs to be changed to visible under Settings.

Applying promotions, rewards and vouchers in Norce

The common practice is to have similar logic set up in Norce as in Voyado, like price lists or promotions with discount codes that you apply in the checkout. This makes it possible to have offers from Voyado that plays well with other business logic in Norce [Storm]. The con is that it creates restrictions to what is possible to do in Voyado, since the same logic must exist in Norce.

Another way is to apply manual prices on basket items. This is more flexible but overrides any other business logic in Norce on the basket.

Redeem Promotions or Vouchers

When a payment is committed (created or reserved), the Voyado promotions or vouchers must be redeemed. A good place to implement this is when a confirmation page is shown to the customer, or maybe even better is to implement it in a payment validation even that some payment service providers support.