Automated exhibition ordering app
At 100% Optical, ZEISS needs to take orders quickly and accurately on the stand. I led the project to rebuild how we do it, using tools we already had in our stack enabling cost and efficiency gains.
The problem
ZEISS has historically collected orders at 100% Optical using a third-party data capture tool outside our regular stack, because the order form needed specific fields and formulas. This caused several problems:
- Customer communications relied on complex Zapier connections and were sent from an email address that wasn’t on the zeiss.com domain.
- The sales team would also need our lead capture app, so they would have had to learn two separate tools.
- The third-party tool was used for this one purpose only, and its costs were increasing.
What we needed to achieve
- Simplify the sales team’s tasks, both on the stand and in the back office.
- Send customer communications from our marketing automation platform and store every contact in our database.
- Send those communications from a zeiss.com address, so customers can see they’re genuine.
- Retire the third-party tool.
Starting with what we already had
The project kicked off in September, with me as technical lead, and the deadline was 100% Optical in February.
In a global organisation, IT setup and access can be complex, so we began by reviewing tools that were already approved. If what we needed was now possible within our existing stack, we could save approval time and cost.
The review showed that Entergon, our lead capture tool, had gained new features, so it became our main platform to build on. The sales team would use one app and one interface, and we would already have an API connection to Marketo.
I had a short call with our Entergon account manager, who confirmed what was ready now, what was coming in a future update, and what would need custom development. There were no setup costs, as we already had access to build within the tool, so I built the basics myself before bringing in the developer who would assist us.
Where we hit a limit
Once the order form flow was largely complete, we tested how the data arrived in Marketo, and whether we could then send the right information to the customer and the back-office team. The form captured more fields than the standard Entergon lead capture form, so I built a matching flow in Marketo to receive them.
This is where we hit a limit: Marketo only keeps a certain number of fields long-term. That made it unsafe to put the sales order in the body of the email. Marketo fills emails using personalisation tokens, which are placeholders replaced with each customer’s data. If a customer used the “view online” option, or later asked for the email to be resent, some tokens wouldn’t populate, because we didn’t have enough fields to store them. The sales order therefore had to be an attachment, so that all the information was always there.
Getting the PDF to the customer
The Entergon project manager confirmed that the data from our form could be exported automatically as a PDF. The question was whether we could get that PDF into Marketo, or whether we’d need another route.
After speaking to CIT, it was clear that enabling attachments in Marketo would be slow and need approval from multiple teams. To avoid that risk, I designed a different route:
- Entergon emails the PDF to a shared inbox.
- Power Automate detects emails that are orders and have an attachment.
- The attachment is sent to the customer from our zeiss.com domain.
- On the stand: Order placed with the customer: Taken by a sales rep at the event
- Ordering app → Marketo: Order sent to Marketo: Data from order form sent into Marketo via API (after: Order placed with the customer)
- Marketo: Thank-you email sent: With a double opt-in, if requested (after: Order sent to Marketo)
- CRM: 'HOT' lead created: Enquiry details passed into the CRM (after: Thank-you email sent)
- Ordering app → Outlook: Order sent to ZEISS shared inbox: Customer order details with PDF attached (after: Order placed with the customer)
- Power Automate: Flow scans the shared inbox for orders: Searches for app's domain and the event name in the subject (after: Order sent to ZEISS shared inbox)
- Power Automate: Customer details extracted: Email, first name and company, from the email's HTML (after: Flow scans the shared inbox for orders)
- Shared mailbox: Confirmation emailed to the customer: Using details extracted from email, with the order PDF attached (after: Customer details extracted)
- Error path: Scan finds a problem: Missing details or attachment (after: Flow scans the shared inbox for orders)
- Alert: Event team notified: Marketing colleagues at the event, and me notified of issue (after: Scan finds a problem)
I also built in a failsafe. If the flow finds an email with no attachment, or can’t extract the information it needs from the HTML, it emails the marketing colleagues attending the event. They can then enter the values manually and the automation resumes. I tested this thoroughly before the event so I knew it would work if needed.
Making life easier for the back office
Previously, the internal order processing team received a PDF and keyed the details into our CRM system by hand. Now, the information needed to create a product enquiry or opportunity is passed from Marketo to the CRM through an API link.
Because contacts go straight into Marketo, we can also send DOI request emails automatically when a customer asks for them.
The result
The event was a success:
- Back office: the team no longer spends an average of five minutes per order entering information into the CRM. That saving grows with every order we take.
- Sales team: existing colleagues found the form very intuitive, because it works just like taking leads. New starters only had to learn one tool.
- Reliability: there wasn’t a single failed submission at the event, and the failsafe was never needed.
- Cost: the project saved thousands. Even after the custom development, it paid for itself within one financial year, and we no longer pay the monthly subscription for the third-party tool.
- Credibility: customers now receive communications from a zeiss.com address, which shows the message is genuine.
What I learned
1. Check what you already have before building or buying.
Reviewing our approved tools first meant we avoided a lengthy approval process and extra cost. Entergon had gained new features, so the answer was already in our stack.
2. Test the full data journey before you commit to a design.
Marketo’s long-term field limit only showed up when I tested how the data arrived. Finding it at that stage, not at the event, is why the sales order became an attachment instead of a set of tokens that might not populate.
3. Build a route around slow approvals, and a failsafe for when it breaks.
Waiting on multiple teams to enable attachments would have put the February deadline at risk. Using a shared inbox and Power Automate kept us moving, and the failsafe meant a problem could be fixed manually on the stand.
4. Design for the people using it, not just the process.
Because the form worked just like taking leads, existing colleagues needed no relearning and new starters only had one tool to learn. Making the tool familiar was as valuable as the automation behind it.