The EvolutionX Order Processing App is a turnkey solution for sending web orders to an endpoint. It automatically includes all of the best practice recommendations for order processing and reduces the work of the receiving system to mapping the attributes to the receiving ERP.
Contents
Use Case
Using the App EvolutionX Order Processing App is similar to using the webhook events system to subscribe to the order created and order updated events except that the app provides all of our recommended order processing steps done for you. We've improved on the event driven webhook system by including the following best practice actions:
Prevent Duplicate Sending: In a scaleable system duplicate sending is possible but we prevent the same order being sent multiple times through a process that allows only one to succeed. This avoids multiple calls to your endpoint without the need for you to track the event ID.
Status update: The EvolutionX order status is set to "In Progress" when the order is successfully sent to the ERP Endpoint or set to "On Hold" if it fails.
Error email notification: If there is any HTTP error response or a timeout, EvolutionX sends an error notification email to the provided email address with details.
External order ID: If the field is set on the App Store and found in the response body, EvolutionX will map the ERP order id to the EvolutionX Order Seller Reference field. This makes it possible to use the ERP order ID to find the order on the EvolutionX API.
Timeline message: The EvolutionX order timeline is a history of events visible to staff using the store admin. The EvolutionX App will update it with a success event or the error message returned by the ERP.
Logging of Events and Requests: Each attempt to send the order is logged for 15 days using the Event and Request logging system for visibility in the EvolutionX Admin.
Reprocess an Order: Staff can reprocess an order that has failed by simply adjust the order "On Hold" status to "New Order" in the EvolutionX admin.
Order Processing
Once installed the app will process orders as follows:
Order events are processed and sent to the target endpoint when all the following are true:
Order is created or updated by any user except an API user AND
Order status is "New Order".
The response from the target endpoint is processed based on the HTTP status:
2xx HTTP Status will result in
EvolutionX Order status is set to "In Progress" and the Order Timeline is updated AND
ERP Order ID is saved in the EvolutionX Order Seller Reference field if found in the response (see install instructions below).
Timeout or other HTTP Status will result in
EvolutionX Order status is set to "On Hold" AND
If the app finds the error message in the response body (see install instructions below) it's used when updating the EvolutionX Order Timeline and sending the Email notification message to staff.
Staff can opt to resubmit the order for processing by changing the EvolutionX order status to "New Order".
Install from the App Store
Key and Token: Both fields are use in the header of the request. Key being the key name and the Token being the value of the key. With these fields we can have a safe and trusted connection with your endpoint (Webhook URL).
Example:
If you have a Bearer Token authentication then your key will be "Authorization" and the value "Bearer xxxxxxx".
Webhook URL: This is the endpoint that you would like the POST request to be sent to when the webhook fires.
Error notification e-mail Sender: SES E-mail address to be used as sender (FROM) for emails sent when an integration error occurs.
Error notification e-mail Receiver: E-mail address to receive (TO) information when an integration error occurs.
Order ID and Status Message: Both fields are paths to a variable on the response, every json key most be separated with a dot ("."). The Order ID will save as a seller reference and the message will be used on the order timeline.
Example:
{
"status": "success",
"message": "Response was a success.",
"object": {
"order_id": "O-42512"
}
}
The Order ID will have the value of "object.order_id" and the Status Message will be "message".