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.

Note: We are on the Zendesk Enterprise Plan; Help Center not activated. Some of the features I mention below are only available in Enterprise, but I would urge you to take a look at your organization and see if some adjustments could be made. Because we utilize our portal in so many different ways I've actually saved my company at least $30,000 a year by replacing several more costly systems with one Zendesk Enterprise plan.

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.

Tip: Instead of creating entirely new fields specifically for your Order Form, see what existing fields you can repurpose. The “Company” field I mention above was repurposed from our General Inquiries Form. There was no need to make another field that would serve pretty much the same purpose. If you do reuse a field from a different form, just make sure your visibility and required settings will be the same for both!

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.

I added the following custom fields to our user and organization sections:
  • 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.

Tip: I also add a "purchaser" tag to my customers who input orders and created a "Purchasers" Customer list so I can easily view and send messages using the MailChimp integration.
Important: Many plans also incorporate customer context which provides similar information to the user data app.

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

Here’s where the process flowchart you made beforehand really starts to pay off. I have six views for our process:
  • View for Open Orders
  • View for Urgent Open Orders
  • View for Approved Orders (Awaiting Processing)
  • View for Processed Orders (Awaiting Shipping)
  • View for Orders on Hold
  • View for Fulfillment Escalations
Tip: I also customized the columns in each view based on what I need to see (price, items, etc.). Since you can also export views for quick reports, it’s advantageous to customize the columns with the info you need instead of the default values that pop up when you create a new view.

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

Meet ALL of the following conditions:
  • Ticket Group is Orders
  • Ticket Assignee is {{Orders Agent}}
  • Ticket Hours since open (calendar) is Less than 24
Meet ANY of the following conditions:
  • Ticket Status is New
  • Ticket Status is Open
Visible columns:
  • 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.

Meet ALL of the following conditions:
  • 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
Visible columns:
  • Request Date
  • Requester
  • Organization
  • Subject

View for Approved Orders (Awaiting Processing)

Meet ALL of the following conditions:
  • 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)

Meet ALL of the following conditions:
  • 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}}
Visible columns:
  • Order SO#
  • Request Date
  • Requester
  • Company
  • PO#
  • Order Details
  • Total Cost

View for Orders on Hold

Meet ALL of the following conditions:
  • Ticket Group is Orders
  • Ticket Status is On-hold
  • Ticket Tags Contain at least one of the following: on hold:need.more.info
Visible columns:
  • 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.

Meet ALL of the following conditions:
  • 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.

Meet these conditions:
  • 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.
Perform these actions:
  • 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

I have three macros set up to be used at the end of each step:
  • Macro for Order Approval
  • Macro for Process Confirmation to Customer
  • Macro for Shipped Orders
Tip: We have different macros for each department/use case and I organize them in two ways: by assigning each macro to a group instead of being available to all agents, and by organizing Macros into categories using colons. The macros listed above all begin with the prefix “Orders :: [Macro Title]” so they’ll be grouped together on the Macros menu.

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:

  • Creating dashboards
  • Reporting with custom fields
Powered by Zendesk