I created a workflow that allows us to process our customers’ orders through Zendesk and I thought I would share with the class. We recently got rid of our CRM for various reasons and, while we're not quite ready to graduate to an ERP system just yet, we had to bridge the gap between our Sales team and the processing of our orders. Zendesk has slowly infiltrated many of our internal and external systems, so it only seemed natural for it to handle our orders as well!
It’s also enabled us and our customers to easily view support and orders requests in one central location while relaying more info to our customers throughout the ordering process. Since launching this system, we’ve decreased turnaround time by streamlining the workflow and revealing fulfillment issues much more quickly than when we were spread across multiple platforms.
Step 1: Map out your process
I'm a visual person, so I literally drew a workflow on a sheet of paper to help me see where the process needed to go and what issues would arise. You can visually see where you'll need to add Views, Triggers, Automations, and Macros and make notes along the way so you’ll remember where you need to add these features and what they need to look like when you start building your process.
Here is what our workflow looks like:
Step 2: Decide how your customers will input orders
We deal with B2B distributors who prefer to email us POs. Your customers, however, might prefer an online order form or even a combination of the two. Both are possible! You just need to decide which is best for your business. Really, the only difference is whether or not you decide to make the order form visible to end-users or not. (More on that below.)
Step 3: Create new ticket fields and form
Since our customers email us their POs, our ticket form is agent-only and tied to our company’s orders email address through a trigger. If you’re creating an online order form you’ll need to make your form end-user visible by checking the “Form name for end-users” box.
Decide what info you'll need to capture and create new ticket fields when necessary. My form has the following fields (I’ve included the field type in the brackets to the right):
- PO# [Text]
- Sales Order# [Text]
- Ship Date [Date]
- Company/Address* [Text]
- Order Details** [Multi-Line Text]
- Total Cost [Decimal]
- Shipping Method [Drop-down]
- Freight billed to [Drop-down]
*Company vs. Address: I don’t think of “Company”in the usual sense here; I use the Organization field for that info. Our customers generally have multiple shipping locations and seeing the address isn't really as important to them as a quickly ensuring that process confirmation shows that the shipment is going to the correct location. I use the following format for entering info into the Company field: “ABC Company - Arlington”just as an easy way to reference the company and location. For one to one transactions where each customer only has one shipping address, however, you might think about creating a custom Organization field for the address that is displayed in the process confirmation.
**Order Details: There are many different Field Types that could be used here from drop downs to regular expressions. And if you have Help Center enabled, the Conditional Fields App could even be utilized to add new fields for multiple line item orders. Again, it really just depends on what works for your organization.
Step 4: User data
More so than any other application in our Zendesk portal, I utilize user & organization data and fields in our Orders process. These features are what really make it possible to make your portal the central hub for your CRM data.
- Standard CRM data (i.e. - Billing Address, Account Owner, Sales Channel, etc.)
- Net terms
- Price List(Which equates to a side by side listing of our products and their corresponding costs in a Multi-Line custom field called “Pricing”)
- Freight account info(Some of our customers want to use their own shipping account numbers)
- Special Prep Work(Some of our customers have special labeling/kitting requirements)
User Data app
If you haven't already, I would highly recommend adding this app to your agent sidebar. It allows you to adjust settings to combine user and org data to see a quick snapshot of your customer without toggling between the two sections. I put this app at the top of the order for the easiest viewing.
Step 5: Create Orders group
Our portal handles everything from external Customer Service to internal IT support, so the way I keep everything compartmentalized is by creating groups and views to accompany each team’s workflows. Similar to forms, the columns visible in each view are dependent upon the information pertinent to each Group.
Create an "Orders" group and add all agents that will be involved in your orders process. For confidentiality, our portal is set up so that agents can only see views assigned to their group. You might want to check on your agent settings to make sure that your agents can only see what you want them to.
Step 6: Create views
I heavily utilize tags to separate each view, and I rely on a combination of macros and triggers to add/remove those tags as the order progresses (with the exception of the “Escalation" and "Hold" tags, which are manually added to these tickets by the agent).
Below are the settings I have for each view. Note that your settings might vary based on your own processes.
View for Open Orders
- Ticket Group is Orders
- Ticket Assignee is {{Orders Agent}}
- Ticket Hours since open (calendar) is Less than 24
- Ticket Status is New
- Ticket Status is Open
- Request Date
- Requester
- Organization
- Subject
View for Urgent Open Orders
When a request hits this queue, a trigger is set up to notify the agent responsible for approving the order.
- Ticket Group is Orders
- Ticket Status is Less than Solved
- Ticket Status is not On-hold
- Ticket Assignee is {{Orders Agent}}
- Ticket Hours since open (calendar) is Greater than 24
- Request Date
- Requester
- Organization
- Subject
View for Approved Orders (Awaiting Processing)
- Ticket Group is Orders
- Ticket Assignee is {{Orders Agent}}
- Ticket Status is not Pending
- Ticket Tags Contain none of the following: onhold:need.more.info, open order / order_ready / order_ready_to_process
Visible columns:
- Request Date
- Requester
- Company
- PO#
- Order Details
- Total Cost
View for Processed Orders (Awaiting Shipping)
- Ticket Group is Orders
- Ticket Status is On-hold
- Ticket Tags Contain none of the following: onhold:need.more.info
- Ticket Tags Contain at least one of the following: processed_order
- Ticket Assignee is {{Orders Agent}}
- Order SO#
- Request Date
- Requester
- Company
- PO#
- Order Details
- Total Cost
View for Orders on Hold
- Ticket Group is Orders
- Ticket Status is On-hold
- Ticket Tags Contain at least one of the following: on hold:need.more.info
- Order SO#
- Request Date
- Requester
- Organization
- PO#
- Order Details
- Total Cost
View for Fulfillment Escalations
When we have a customer respond to their order notices with issues, we tag the ticket as a fulfillment escalation and assign to a designated agent so that these issues won't get lost in the queue of other orders. Adding this tag allows us to funnel all escalations to one place for quick resolution.
- Ticket Group is Orders
- Ticket Assignee is {{Orders Agent}}
- Ticket Status is Less than Solved
- Ticket Tags Contain at least one of the following: fulfillment_escalation
Visible columns:
- Request Date
- Organization
- Requester
- Order SO#
- PO#
- Subject
Step 7: Create triggers
Here’s where the whole thing begins to take shape! You ’ll want to create at least one trigger to push an order directly through your process instead of having it bob around in your support queue. Here is how ours is set up.
- Ticket is Created
- Ticket Status is not Solved
- Ticket received at: orders@innovolt.com Note: We use Support Addresses to properly route orders and all other tasks we funnel through our Zendesk portal.
- Ticket Group: Orders
- Ticket Assignee: {{Orders Agent}}
- Ticket Form: Order Form
- Add Tags: open_order
- Ticket Shipping Method: Ground
- Ticket Freight billed to: Prepaid Note: This saves time because these are the two most chosen options.
- Notifications: Email User (requester)
- Email Subject: Your order request has been received
- Email Body:
Your order has been received! Thank you very much!
What happens now?
Orders are processed within 2 business days. You will receive a confirmation once we've processed your order and tracking information once it's left our facility.
Questions?
Visit http://innovolt.info/submit-request
To view or modify your order, reply to this email or click the link below:
{{ticket.link}}
{{ticket.public_comments_formatted}}
Step 8: Create macros
Macro for Order Approval
- Ticket Group: Orders
- Ticket Assignee is {{Orders Agent}}
- Ticket Comment Mode: Private
- Ticket Comment/Description: "This order is go to go"
- Ticket Remove tags: open_order
- Ticket Add tags: order_ready_to_process
Macro for Process Confirmation to Customer
I've made use of custom field placeholders on this macro.
- Ticket Status: On-hold
- Ticket Assignee: {{Orders Agent}}
- Ticket Add tags: processed_order
- Ticket Remove tags: order_ready_to_process
- Ticket Set subject: "Your recent Innovolt order has been processed PO# {{ticket.ticket_field_option_title_XXXXXXXX}}"
- Ticket Comment/description:
Hello, {{ticket.requester.first_name}}
------
Your recent Innovolt order has been processed:
**PO# {{ticket.ticket_field_option_title_XXXXXXXX}}**
**Innovolt Order# INVTW{{ticket.ticket_field_option_title_XXXXXXXX}}**
**Ship To: {{ticket.ticket_field_option_title_XXXXXXXX}**
**Order Details {{ticket.ticket_field_option_title_XXXXXXXX}}**
**Total: ${{ticket.ticket_field_option_title_XXXXXXXX}}**
**Shipping Method: {{ticket.ticket_field_option_title_XXXXXXXX}} ({{ticket.ticket_field_option_title_XXXXXXXX}})**
*You will receive a notification with tracking once your order leaves our facility*
------
[Click Here]({{ticket.link}}) to review or modify your order.
Thank you for choosing Innovolt and have a great day.
Sincerely,
{{current_user.name}} ”
Macro for Shipped Orders
- Ticket Status: Solved
- Ticket Remove tags: processed_order
- Ticket Add tags: shipped_order
- Ticket Comment mode: Private
- Ticket Comment/description: "This order shipped on {{ticket.ticket_field_option_title_XXXXXXXX}}" (where the custom placeholder is the Ship date)
Reporting
Another cool aspect of processing your orders through Zendesk is that Explore can actually be set up to report monthly sales activity based on these orders by creating reports (dashboards if you will.…) that can add up numerical custom fields. Here are some fantastic articles on adapting Explore to fit your needs: