Plug Sample #8 - Track your eCommerce order real-time with Zobot - Zoho commerce integration

Plug Sample #8 - Track your eCommerce order real-time with Zobot - Zoho commerce integration

Hi Everyone!

Zoho SalesIQ's Zobot is an intelligent tool to increase customer engagement and provide support, especially in the e-commerce industry. A crucial aspect of e-commerce is ensuring your customers can easily keep track of their orders. Just imagine your Zobot providing real-time updates on your customers' order status, tracking URL, shipment details, and estimated delivery dates. Sounds cool, right? That's what we are going to look at in this post. 



Zoho Commerce is a comprehensive e-commerce platform for building a website, accepting orders, tracking inventory, processing payments, and more. With SalesIQ's Zobot seamlessly integrated with Zoho Commerce, you can now provide exceptional support and prioritize convenience for your customers by making your bot actively promote your key offers, assist in tracking orders, create support tickets, and much more. 

To learn more about chatbots usage in the e-commerce industry, check out our exclusive webinar and help article. Now, let's dive into the step-by-step process of how to make your bot track orders with the codeless bot builder.

Overview of tracking orders



Step 1 - Create a connection between SalesIQ and Zoho Commerce.

  •  In your SalesIQ Dashboard, navigate to Settings > Developers > Plugs > Click on Add.
  •  Provide your plug a name, and description, select the Platform as SalesIQ Scripts, and finally, click on Connection to your left bottom. You will be redirected to the connection interface.

  •  Click on Create connection at the top right corner. Under Default connection, select Zoho OAuth service. 

  • Provide your connection name, connection link name, and choose the scopes below.
    • ZohoCommerce.salesorders.READ
    • ZohoCommerce.items.READ
  • Click on Create And Connect to connect Zoho SalesIQ and Zoho Commerce. 


  • Upon successful authentication,  Zoho SalesIQ will be connected with Zoho Commerce. 
Note: The Connection Link Name will be used in the scripts to invoke URL tasks.
 

 

Step 2 - Fetch the "Shipped" orders (Plug 1)

First, let's look at how to list all the shipped orders of the visitor from Zoho Commerce. To do this, we need the email address of the visitor. By List all sales orders API, the bot can fetch all the orders from the visitors (email). Then using the status as a filter, all the Shipped orders can be fetched and displayed to the visitors as options. 

Input Parameter:
  • Name: email | Type: Email
Output Parameter: 
  • Name: orderList | Type : Options list


Copy/paste the below code to list all the shipped orders. 
 
  1. response = Map();
  2. if(session.containsKey("email"))
  3. {
  4. email = session.get("email").get("value");
  5. }
  6. params = Map();
  7. params.put("email",email);
  8. params.put("page","1");
  9. params.put("per_page","5");
  10. header = Map();
  11. //Insert your Zoho Commerce Org ID (From your Zoho Commerce, navigate to the Store > Settings > Organization Profile > Organization ID)
  12. header.put("X-com-zoho-store-organizationid","<org_ID>");
  13. check_status = invokeurl
  14. [
  15. url :"https://commerce.zoho.com/store/api/v1/salesorders"
  16. type :GET
  17. parameters:params
  18. headers:header
  19. connection:"zohocommerce"
  20. ];
  21. array = check_status.get("salesorders");
  22. optionList = List();
  23. for each  entry in array
  24. {
  25. salesorder_id = entry.get("salesorder_id");
  26. URL = "https://commerce.zoho.com/store/api/v1/salesorders/" + salesorder_id;
  27. get_order_details = invokeurl
  28. [
  29. url :URL
  30. type :GET
  31. headers:header
  32. connection:"zohocommerce"
  33. ];
  34. shipping_status = get_order_details.get("salesorder").toList().get(0).get("shipped_status").toUpperCase();
  35. //Printing the shipped orders
  36. if(shipping_status == "SHIPPED")
  37. {
  38. product_ordered = get_order_details.get("salesorder").get("line_items").toList().get(0).get("name");
  39. quantity = get_order_details.get("salesorder").get("line_items").toList().get(0).get("quantity").toNumber();
  40. display_text = product_ordered + " (" + quantity + ")";
  41. optionList.add({"id":salesorder_id,"text":display_text});
  42. }
  43. }
  44. response.put("orderList",optionList);
  45. return response;
  • Then, click Save, preview the plug and Publish it. 
Note: API invoked in the plug List all sales orders 

Step 3- Getting order details (Plug 2)

In the previous step, we fetched all the "Shipped" orders and displayed them to the visitors. When they click on a specific order, the bot will get the order details from the Retrieve sales order API and provide them to the visitor. 

Input Parameter:
  • Name : orderID | Type : String
Output Parameter: 
  • Name: shippingAddress | Type : String
  • Name: deliveredDate | Type : String
  • Name: orderName | Type : String
  • Name: orderNumber | Type : String
  • Name: quantity | Type : Number
  • Name: orderCost | Type : Number
  • Name: trackingUrl | Type : Options list
  • Name: shippedDate | Type : Options list
  • Name: paymentMode | Type : Options list
  • Name: shippingStatus | Type : Options list


 Copy and paste the below code to get the order details.
 
  1. if(session.containsKey("orderID"))
  2. {
  3. salesorder_id = session.get("orderID").get("value");
  4. }
  5. header = Map();
  6. //Insert your Zoho Commerce Org ID (From your Zoho Commerce, navigate to the Store > Settings > Organization Profile > Organization ID)
  7. header.put("X-com-zoho-store-organizationid","<ord_ID>");
  8. URL = "https://commerce.zoho.com/store/api/v1/salesorders/" + salesorder_id;
  9. get_order_details = invokeurl
  10. [
  11. url :URL
  12. type :GET
  13. headers:header
  14. connection:"zohocommerce"
  15. ];
  16. order_number = get_order_details.get("salesorder").toList().get(0).get("salesorder_number");
  17. product_ordered = get_order_details.get("salesorder").get("line_items").toList().get(0).get("name");
  18. cost = get_order_details.get("salesorder").get("line_items").toList().get(0).get("rate").toNumber();
  19. quantity = get_order_details.get("salesorder").get("line_items").toList().get(0).get("quantity").toNumber();
  20. payment_mode = get_order_details.get("salesorder").get("offline_payment_details").toList().get(0).get("payment_mode");
  21. shipping_address = get_order_details.get("salesorder").get("shipping_address").toList().get(0).get("address");
  22. tracking_url = get_order_details.get("salesorder").get("packages").toList().get(0).get("status_message");
  23. shipping_address = get_order_details.get("salesorder").get("shipping_address").toList().get(0).get("address");
  24. shipping_status = get_order_details.get("salesorder").toList().get(0).get("shipped_status").toUpperCase();
  25. if(shipping_status == "FULFILLED")
  26. {
  27. shipping_status = "Delivered";
  28. tracking_url = "No tracking URL";
  29. delivered_date = get_order_details.get("salesorder").get("packages").toList().get(0).get("shipment_date");
  30. shipped_date = get_order_details.get("salesorder").get("packages").toList().get(0).get("shipment_date");
  31. }
  32. else if(shipping_status == "SHIPPED")
  33. {
  34. shipping_status = "Shipped";
  35. tracking_url = get_order_details.get("salesorder").get("packages").toList().get(0).get("status_message");
  36. shipped_date = get_order_details.get("salesorder").get("packages").toList().get(0).get("shipment_date");
  37. delivered_date = get_order_details.get("salesorder").get("packages").toList().get(0).get("shipment_date");
  38. }
  39. else
  40. {
  41. shipping_status = "Yet to Ship";
  42. tracking_url = "No tracking URL available";
  43. shipped_date = "NA";
  44. delivered_date = "NA";
  45. }
  46. response = Map();
  47. response.put("orderNumber",order_number);
  48. response.put("orderCost",cost);
  49. response.put("orderName",product_ordered);
  50. response.put("quantity",quantity);
  51. response.put("shippingStatus",shipping_status);
  52. response.put("paymentMode",payment_mode);
  53. response.put("shippingAddress",shipping_address);
  54. response.put("trackingUrl",tracking_url);
  55. response.put("shippedDate",shipped_date);
  56. response.put("deliveredDate",delivered_date);
  57. return response;
  • Then, click Save, preview the plug and Publish it. 
Note: API invoked in the plug Retrieve sales order
 

Step 3 - Adding these plugs to the Codeless bot builder

  • Navigate to Settings > Bot > Add, provide the necessary information, and select Codeless Bot as a bot platform or open an existing bot.
  • To list the shipped orders, get the email address from the visitor by email card. 
  • Then, select the Plugs under Action Cards and select listShippedOrder (Plug 1). In the input parameters, select the Email context variable and provide a name (tracking.order) to save the list of shipped orders. 


  • Next, use the Single choice card to display all the shipped orders. Provide an option "Can't find my order" and click on dynamic suggestions and select the (tracking.order) variable. 

  • Next, click on Save in bot context (post.tracking.order) and store the visitor's order choice. 

  • Then, use the criteria router to route the flow based on the visitor's choice. 

  • After that, select the orderDetails plug in Plug card. And provide the post.tracking.order as the input and provide names for the outputs. 



  • Finally, use these context variables by typing % in the Send message card to display the order details to track orders. 

  • Also, use the markups to provide the tracking URL as a hyperlink.  


Bot Preview (Output)

  • The bot will ask for the email address and then provide the "shipped" orders list.  

  • Then the visitor selects one order, and the bot will provide the information about the order.  

  • Once the bot flow is complete, click Publish to deploy Zobot on your website or online store. Zobot will be ready to engage with your customers, provide support, and assist with their purchasing journey.
 
Related links:
To know more about the features of Zobot, kindly visit our Resources Section. 

    • Recent Topics

    • Explication sur comment mettre en place des règles d'affichage ou "layout Rules"

      J'ai passé plus d'une heure hier avec le support et je n'ai rien compris !! Je suis lecteur assidu des guides (je "RTFM") qui ne sont absolument pas orienté "client" chez Zoho, et je tiens à le rappeler ici . Dans la documentation on m'indique un cas
    • Kiosk Studio wrap-up | How our community used kiosks in 2024

      Hello, everyone! Happy new year! The end of 2024 has been busy, and 2025 promises to be bigger and better. As we ring in the new year, let's rewind and look at Kiosk Studio, our no-code customization tool. The past 300 days have seen the CRM community
    • Zoho and Hostaway webhok integration.

      I want to receive data coming from hostaway webhook and receive it in zoho crm to create or update record in a module based on conditions. The hostaway webhook sends data every time a reservation is created or modified or cancelled. The hostaway sends
    • Allow us to disable the Reopen Ticket button after a ticket is closed

      Disabling the Reopen Ticket will allow us to have more control over the ticket's flow. According to support, this is currently not possible. Please add this to let us, the customers, mold the ticketing system into something that we can use for our business
    • Function 56: Automatically enable the option for customers to pay via bank account

      Hello everyone and welcome back to our series! One of the key features of Zoho Books is its integration with multiple payment gateways, allowing you to receive online payments for your invoices. This ensures faster payments, automates payment tracking
    • Connect multiple Facebook ad accounts to Zoho Social

      Hi there. I'm doing the Facebook Ads and Zoho Social integration to automate the leads that come from Potential Customer campaigns on Facebook to Zoho CRM. I have a company (1 fanpage, 1 brand), but within the business or brand on Facebook, I manage several
    • Custom service report or Zoho forms integration

      Hello, So far the experience with Zoho FSM and the integration with Books has been good, however there are limitations with service reports. As with my business, many organisations send technicians to different types of jobs that call for a different
    • Creation of Path and subpath

      In order to improve the structure of the website for better organization, I would like to consider that when publishing a page, it can be within a section and sub-section. For example, if I have an events option in the menu, I can put past events and
    • Execution failure when fetching a Name field from another app

      In creator I have one app [Employee Directory] with a form [Employees]. One of the fields is a name field called [Name]. Here is a sample that works, if executed from the Employees app: test_Employee = Employees[Name.first_name == "Alex"]; info test_Employee.Name;
    • Assign task owner using Deluge

      Use Case: Each task is a document development task wherein once the developer has completed the first draft, the next step in the process is for the document to be QA-ed by the project's assigned auditor. Thus, I am currently working out a blueprint where
    • Using AVG in SQL Query

      My current SQL Query is: SELECT "Client Info", avg("Revenue") FROM "Funded Deals" GROUP BY "Client Info" The current table that this is creating: Client Info avg(Revenue) Previous 4175 1st - New 3411 1st - Old 3013 Renew 3069 While this works as I had
    • The Next Chapter for CRM for Everyone: Moving from Early Access to Phased Rollout for Customers

      #CRM25Q1 Hello Everyone, Until now, CRM for Everyone has been available in early access mode exclusively for users who opted to try the new version. We are now transitioning to a phased release, starting with the basic edition. We are thrilled to announce
    • Meta and Facebook data report discrepancy

      I have been currently gathering manually facebook follower data thru meta. In zoho marketing plus the social media reporting only allows for page likes, and so there is a discrepancy with the data. please the difference in files attached. Is there way
    • Links in Instagram

      Hi there, I have been using Later for a while now but keen to come back to Zoho Social as Later doesn't offer tagging of pages on Facebook but they offer something Zoho doesn't. You can add a link to your bio which opens up your profile feed where images
    • Sort By Date - Deluge

      I have the following code, which normally works to sort calls by created time. Every once in a while, it doesn't work and something sneaks through in the wrong order and I can't figure out why. calls = zoho.crm.searchRecords("Calls","(Owner:equals:" +
    • How to Enforce Mandatory Fields (Category/Sub-category) Before Closing a Ticket?

      Hi, I'm currently using Zoho Desk and encountering an issue where agents are able to close tickets without filling out mandatory fields, specifically Category and Sub-category. I’ve already set them both as a mandatory field, but it can still be bypassed
    • If I turn off the Task Prefix & ID in the Portal Configuration section, will it remove the dependencies in my projects?

      Hi all, basically the title, I am new to zoho projects and trying to get my head around some basic principles. Unfortunately I have not found this information via the search option and after deleting yesterday some Phases I had created in the Phases tab,
    • Admin Control for Default Email Templates in Zoho Desk

      Hi Zoho Desk Team, We would like to request a feature enhancement related to default email templates. Currently, agents can select and set their own default email templates when replying to tickets. However, we believe this setting should be managed centrally
    • Enter dates in tasks with just "tue" or "+10" or "5d" ???

      Is there any way to enter due dates in tasks without typing the whole date or making time consuming clicks in the calendar? I don't see anything online in the help or third party videos.
    • Zoho takes too long to load...

      I am based in Europe and in the last couple of weeks, Zoho CRM takes minutes even to load modules. Is there a specific reason this is happening? Is this happening to other people?
    • How can the direct link to a ticket be created from ticket #?

      Our agents will be using ZDesk but we will have to create direct link to tickets in another ERP by providing the Desk Ticket # Is there a way to create the direkt links from the ticket # alone? Do we have to use the API to get the direct links?
    • Modules are continuously loading

      Hi! We are not able to open the task modules, it keeps continuously loading
    • Zoho Desk : Field for 'Layout'

      I have many different layouts on my helpdesks and I want to be able to identify the stats for each one, however I can not find the field in the raw data from the Zoho Desk datasource. I thought it might be in the "Tickets" table but there is nothing.
    • Customize Zoho One Dashboard and URL?

      Hi everyone, Is there a way to customize my Zoho One URL to be different from the default portal URL? The current portal URL is: one.zoho.com/zohoone/[organization] I want to map it to its own standalone domain that we own. eg) domain.com instead of one.zoho.com/zohoone/[organization]
    • Enable Sending Direct Messages to Self in Zoho Cliq

      Hi, I would like to request a feature enhancement for Zoho Cliq to allow users to send direct messages to themselves. Currently, Zoho Cliq does not have the option to send a direct message to oneself. While creating a channel with just one member (the
    • Guidance on Making Zoho Desk Connections Available for All Data Centers

      Hi Team, I’m currently developing an application using Zoho Desk connections to manage OAuth for my third-party products. Could you please advise on the steps required to make it available across all data centers? Looking forward to your thoughts on
    • Emailing lookup field but placing this as an ID or number rather than text

      Hi there, First time poster and have been a user of Zoho Creator for approx 6weeks so forgive my ignorance as I learn to code. We have a need to send an email to a specific email address with some of the fields triggered by the submission of a form. In
    • JOB Sheet can not send PDF as service rapports and more info needed other topic

      Goedendag, - Jullie hebben nu job sheet erin gedaan en dar is echt super goed, enkel kunnen we de werkbon ( JOB sheet) nu niet verzenden als PDF als een service rapport naar onze hoofdaannemer hoe we dat nu doen als bewijs van de levering van het werk
    • Tax Deduction at Source (TDS)

      I issued a sale invoice outside UAE , the customer apply TDS on the invoice , i checked my Zoho ( professional version ) i couldn't find the option of Enable TDS to let it appear while posting the incoming payment , please how to make it and how to configure
    • UNAPPROVED record management

      When the unapproved list of duplicates is long, one needs the some tools to manage them - when this list has over 1500 records, we cannot manage it without some tools, such as: 1. The ability to apply a filter - ie similar to creating a CREATE a NEW VIEW
    • Zoho mail filter Add to WorkDrive doesnt't work

      Hello, We have a problem with using the filter in the email. So, we want that when a bulk payment confirmation from the online store arrives, this email is automatically saved in HTML format on the drive using the action 'Add to Zoho WorkDrive -> Email
    • Introducing Zia GenAI: Zoho's Native Generative AI for Zoho Desk

      Hello everyone, Zia GenAI is available on Early Access for Zoho Desk Enterprise subscribers. Kindly fill out this Registration Form to request early access. We are excited to announce the Beta release of Zia GenAI in Zoho Desk, now available through our
    • Add blueprint buttons to listview and kanban

      Hello, just started to use the Blueprints feature - really useful. I have one suggestion to help this work even better - can there be transition buttons that appear on the top of listview & Kanban? Maybe an option as well - "Blueprint transitions appear
    • Deleted message in SPAM

      In one of my gmail accounts (getnickifit@gmail.com) I had an email from PayPal in the SPAM folder. I thought I was moving the message to the inbox from the zoho mobile but it looks like it was deleted. It is no where to be found--inbox, trash, etc. Can it be restored?
    • CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive

      Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
    • Multiple Facebook Pages under Single Brand

      Hi everyone, I'd like to know if there is a possibility of connecting multiple Facebook pages under a single brand on Zoho? At the moment, there are different Facebook pages of a single brand and would want to keep under the same brand on Zoho as we
    • Zoho Books Estimate to Zoho CRM quote?

      I'm not sure why this isnt automatic, but maybe I'm missing something. When we create a quote in zoho books we have a custom function that pushes the contact into a deal within the CRM. I can not for the life of me figure out how to push an estimate from
    • Zoho Developer Hangout (ZDH) – Episode 17 | Optimizing Organizational Processes through Automation

      Hey developers! Running a business can get quite overwhelming especially when juggling multiple tools like those in the Zoho ecosystem. Although integrating most of them is a piece of cake, manual intervention is needed at times. Being able to automate
    • User Emails Blocked

      Community: I keep running into issues where our users stop receiving notifications from CRM because their email addresses get blocked in on the backend some how. I reach out to support, they confirm, they fix, and we carry on, but then it happens again.
    • Organization Variables - Restrict Access

      Currently, there is no way to restrict the access to organization variables. This leads to a problem when storing API related values that should be kept secret as anyone with access to create and edit email templates, workflow rules, or inventory templates
    • Next Page