Kaizen 245 - Real Time Signal Alerts for High-Value Abandoned Checkouts

Kaizen 245 - Real Time Signal Alerts for High-Value Abandoned Checkouts



Howdy, Tech Wizards!

Welcome back to another week of Kaizen.

In this post, we will build a real-time abandoned checkout notification system using Stripe, Zoho CRM Functions, Sales Signals, and Widgets.

When a customer abandons a high-value purchase, Zoho CRM instantly notifies the record owner through a Signal. Selecting the Signal opens a widget that displays checkout details and direct links to the associated products, enabling sales teams to engage with customers while purchase intent is still fresh.

Business Scenario

Businesses that sell high-value products often lose potential revenue when customers abandon the checkout process before completing a purchase. Although the products added to the cart clearly indicate purchase intent, sales teams often discover abandoned purchases too late through reports or manual reviews, reducing the chances of recovering the opportunity.

Solution

To address this challenge, we will use Stripe Checkout events together with Zoho CRM Functions, Sales Signals, and Widgets.

When a Stripe Checkout Session expires without a successful purchase, Stripe sends a webhook event to a Zoho CRM Standalone Function. The function extracts checkout details from the event payload and invokes the Signals Integration Task to generate a real-time notification associated with the customer record.

When the user selects the Signal, a widget opens and displays the checkout details, including the cart value, checkout timeline, and abandoned products. The widget also provides direct navigation to the corresponding product records in Zoho CRM.

This enables sales teams to quickly identify abandoned high-value purchases and take timely action.

Prerequisites

Before proceeding, ensure the following components are available:
  1. A Stripe account with Checkout configured.
  2. An e-commerce application that creates a Stripe Checkout Session when customers proceed to checkout.
  3. Cart details, including product names and quantities, stored as metadata when creating the Checkout Session.
  4. A Zoho CRM Standalone Function with REST API access enabled. We will code this function in the upcoming steps. 
  5. A Stripe webhook configured for the checkout.session.expired event, with the Zoho CRM Standalone Function’s REST API endpoint set as the destination URL.
  6. Product records available in the Zoho CRM Products module.
  7. Customer records available in the Zoho CRM Contacts module.

I. Create a CRM Sales Signals

1. Go to Setup > Experience Centre > Signals and click Create New Signal
2. Provide a label for the Signal. When the label is entered, Zoho CRM automatically generates a namespace for the Signal.
Make a note of this namespace. We will use it later while invoking the Signals API.
3. Configure the Signals using the following settings:
  1. Service: Stripe
  2. Trigger Type: API
  3. View Type: Default
4. Click Save


II. Build the Standalone Function

Stripe sends the checkout expiration event to the Standalone Function through the configured webhook endpoint.

The event payload is available in the crmAPIRequest parameter.

1. From the event object, extract the following details:
  1. Customer email address
  2. Checkout Session creation time
  3. Checkout Session expiration time
  4. Cart total amount
  5. Cart item metadata
payload = crmAPIRequest.get("body");
sessionData = payload.get("data").get("object");
amountTotal = sessionData.get("amount_total");
customerEmail = sessionData.get("customer_email");
metadataMap = sessionData.get("metadata");
metadata = metadataMap.get("cart_items");
createdTime = sessionData.get("created");
expiresAt = sessionData.get("expires_at");

2. Add a validation step to generate a Signal only when the cart value exceeds USD 50,000.

if(amount_Total > 50000) {

//Construct Signals Payload
}

3. Construct the Signals API payload using the extracted values and the Signal namespace created earlier. Set the open_in property to popup so that the Signal can open an associated widget.

For this implementation, pass the cart metadata in the data object of the Signal payload so that it can be accessed by the widget during page load.

4. Use the Deluge Integration Task to invoke the Signal. 

resp = zoho.crm.raiseSignal(signalMap);

III. Build the Signals Widget

1. Create a new widget project in your local using Zoho CLI
2. When the widget loads, Zoho CRM passes the Signal payload through the on PageLoad event.
3. Convert the Unix timestamps into a readable date and time format.
4. Display the checkout start time, expiration time, cart value, and cart items in a structured table.
5. Use the product names received through the metadata to query the Products module using COQL and retrieve the corresponding Product IDs.
6. Embed a redirection link to the product record pages using the record IDs. 

This allows sales representatives to quickly access product information while following up with the customer.

Info
Check out the crm-kaizen GitHub repository for the Signals Widget code. 

IV. Upload the Widget and Associate it with the Signal

1. Follow the widget help guide to Validate and pack the widget. 
2. Go to Setup > Developer Hub > Widget and click Create New Widget
3. Configure the widget and select Signals as the widget type. 
4. Upload the packaged widget and click Save.


5. Next, navigate to Experience Centre > Signals > Manage Signals and open the Stripe checkout Signal created earlier.
6. Update the Signal view type to Widget and associate the uploaded widget.
7. Click Update.


Try it Out! 

Create a Stripe Checkout Session using the Stripe API and allow it to expire without completing the purchase.


When the Checkout Session expires:

1. Stripe sends the webhook event to the Standalone Function.
2. The function invokes the Signals API and generates a Signal for the record owner.
3. Selecting the Signal opens the widget.
4. The widget displays the cart value, checkout timeline, and abandoned products with direct links to their CRM records.



This enables the record owner to quickly review the abandoned purchase and reach out to the customer.

The Zoho CRM mobile application also delivers the Signal as a push notification, ensuring that salespeople are alerted even when they are away from the web interface.

Hope you found this post useful. 

We will circle back at you with a different topic next week. 

If you have questions or suggestions, leave a comment below or write to us at support@zohocrm.com.

On to better building!

------------------------------------------------------------------------------
------------------------------------------------------------------------------
    • Sticky Posts

    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Change email addresses - Advise how

      Good day, I need assistance to change all our users email addresses Please advise
    • email signature

      How do you add an email signature
    • Email Forwarding | How to Enable and Disable Email Forwarding on a Non-Admin User Account

      Email Forwarding Issue: Enable and Disable Email Forwarding
    • Ask the Experts 31: Improving support performance with reports and dashboards

      Hello everyone, Join us for the next Ask the Experts (ATE) session! Ask the Experts is an opportunity to connect with people who have deep knowledge of Zoho Desk. Let's look at the topic we're focusing on this month. Just as we rely on the right tools
    • Zia AI capabilities now available in all paid editions

      Hello everyone, We are expanding the availability of AI-powered features in Desk to the other paid subscriptions from 7th July 2026. Right now, the following AI-based features are available for Enterprise edition users: Intelligence: Sentiment analysis,
    • Add a MATRIX field to the forms creation

      Same as Zoho forms, we need a Matrix field in Zoho Creator forms, is very usefull
    • Product updates in Zoho Workplace applications | June 2026

      Hello Workplace Community, Let’s take a look at the new features and enhancements that went live across all Workplace applications for the month of June. Zoho Mail Alphanumeric support for attachment extensions in rule conditions Attachment extension
    • Zoho support is trash

      I have been sending them requests for over two weeks and I get the most random off topic responses. What the hell is going on there? All I need is to get one of my users setup to run reports. Because as admin of the account I cannot even make this simple
    • Biggest supported size of a note

      I'm still testing this ZOho Notebook before purchasing a premium licence and can't work with large notes. I store personal vocabulary in two 13,000-word / 83200-character notes. Same poor experience with PC, Web, and mobile apps: Is there an application
    • I need help lease Email

      I' not getting an email replay when someone open a ticket
    • Sigma function call hangs forever from Desk widget — app_install_id/encapiKey are null

      Calling ZOHODESK.request() from the widget to invoke a Sigma DRE function URL hangs forever (never resolves, never rejects, no error) until client timeout. Tried with merge fields app_install_id={{sigmaInstallId}}/{{installationId}} and encapiKey={{enCapApiKey}}
    • Draft quotes, sales orders, and raise invoices for services in CRM

      Create Quotes, Sales Orders, and Invoices for Services in Zoho CRM You can now draft Quotes, and Sales Orders as well as raise Invoices for services in Zoho CRM. And how is that possible? By filling out the Service subform in your Quotes, Sales Orders
    • Canva Integration

      Hello! As many marketing departments are streamlining their teams, many have begun utilizing Canva for all design mockups and approvals prior to its integration into Marketing automation software. While Zoho Social has this integration already accomplished,
    • Admin Logging in as another User

      How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Latest Update (27th April 2026): With the early
    • Action Required: Allowlist New IP Ranges for the EU Data Center

      Dear Users, We are adding new IP ranges for the Zoho Analytics EU data center (https://analytics.zoho.eu). If you import data into Zoho Analytics from cloud databases (such as Amazon RDS, Amazon Redshift, or Microsoft Azure) or use Live Connect, you must
    • Tips & Tricks #3: Zoho CRM - Agentes en la página de inicio

      Hola a todos, Vuestros Agentes realizan un trabajo muy útil. Encuentran información como clientes potenciales importantes, oportunidades de venta y actualizaciones relevantes. Sin embargo, hasta ahora no era posible ver esa información directamente en
    • Pricelists

      So we have them in books but I cannot find them in commerce?
    • Automating CRM backup storage?

      Hi there, We've recently set up automatic backups for our Zoho CRM account. We were hoping that the backup functionality would not require any manual work on our end, but it seems that we are always required to download the backups ourselves, store them,
    • 'Pinned' notes feature of a pipeline record

      Hi team, Could you please implement a feature which will allow users to pin different notes so that they will appear at the very top of the notes tab in a pipeline record. Sometimes we have a wide range of notes on a record which means more important
    • Associate emails from both primary and secondary contacts to deal

      We need to associate emails from multiple contacts to a deal. Please advise how this can be achieved. At present, only emails from primary contacts can be associated. Thanks
    • Custom Button Creation from Layout Editor in Zoho CRM

      Hello All, Buttons in Zoho CRM act as triggers that perform a specific action when clicked. Zoho CRM includes a set of system buttons that help you carry out common actions with a single click. Beyond these, your organization can create custom buttons
    • #PitStop3: Share & Collect Payment using Zoho Invoice

      We have reached another milestone in our journey. Post #15 to #20 weren't just about sharing invoices, they were about building a payment workflow that works for you, your customers and your business. Here's a quick wrap of what we covered in this segment:
    • Suggestions for Improving the Deluge Development Experience

      Hello, I would like to share some ideas that could significantly improve the Deluge development experience, especially for partners and developers building larger solutions across the Zoho ecosystem. Some key areas that would add a lot of value: Deluge
    • Enhancement announcement: Mitigate mailbox clutter using the new field: "Sync emails from"

      Dear Customers, We hope you're well! We are here with a minor enhancement in email integration in Zoho CRM. Emails have become the primary mode of communication these days. Because of which mailboxes are getting overly cluttered day after day. To help
    • Zoho CRM Sandbox now supports integrations

      Hello everyone, We are now expanding Zoho CRM Sandbox to support integrations with other Zoho products. You can connect, configure, and validate the behavior of your integrated tools within a safe, isolated environment - testing end-to-end without touching
    • Building Toppings #8 - Using widgets to extend the Bigin UI

      Hello Biginners, In our previous forum post, we explored schedules and workflow functions and learned how to automate real-time and time-based actions inside a topping. In this post we'll look at how to embed custom UI components inside Bigin using widgets.
    • Tip #81 – Turn every session into a story with Session Highlights – 'Insider Insights'

      Hello Zoho Assist Community! Picture this: your team wraps up dozens of remote support sessions every week. Each one involved troubleshooting, tools, fixes, and back-and-forth with customers. But when it's time to review what actually happened across
    • Zoho CRM APIs

      Hello, I think as a developer, it is very important to have the ability to manage, develop, and execute functions directly from my local development environment (for example, VS Code). Zoho CRM should have a way to create, deploy, and manage functions
    • 🎙️ Ask The Experts: Get Your Bigin Questions Answered Live

      We've seen so many thoughtful questions from our #BiginnersClub community over the years. While we're always happy to help here, we're excited to introduce a new way for you to connect with us directly. Join us for Ask The Experts, a one-hour live fireside
    • Postcode problems

      So we were very pleased to see we could limit shipping with postcodes. Brilliant. Unfortunately we have discovered It does not seem fit for purpose. In the UK we write postcodes in various ways Examples BH217NL BH21 7NL Bh217nl bh217NL and many more ways
    • Certain items certain shipping

      Me again it would be helpful to have different shipping for different categories. Our example are salt. Delivery is free but have a minimum delivery. Pickup is cheaper so it has its own category- pickup.
    • Cookies Consent Management in Webforms

      Hello Everyone! We are excited to introduce Cookie Consent Management for webforms. Read on to learn more. Webforms are online forms embedded on websites that allow users to submit data and create records in Zoho CRM. These forms utilize cookies to track
    • Payment links in Bigin just got supercharged

      Greetings, We're happy to announce major enhancements to the Payments feature in Bigin. As you may already know, Bigin supports Payments integration, which enables you to create and send payment links directly from Bigin to your customers. It also allows
    • Disable Spam filter

      Hi Support Team, Please disable spam filter for https://desk.zoho.in/support/keboli. Some spam ticket ids: #102, #103, #104
    • I just signed up

      Hi, I have just signed up for the domain griffithcgenterprises.com. I would like to make two adjustments: If possible, I would prefer a 5 GB hosting/email plan instead of the current 10 GB option, as I believe that should be sufficient for my needs at
    • History tab stuck loading indefinitely on Android (v2.22.0)

      History tab stuck loading indefinitely on Android (v2.22.0) — server returns 500 on visitorhistoryviews Hi all, I'm running into an issue where the History tab in the SalesIQ Android app (v2.22.0) never loads — it just spins indefinitely. Screenshots
    • Não consigo enviar e receber e-mail

      Estou tendo problema de envio e recebimento de e-mail (meu e-mail é ands....lisi.com.br) Esta mensagem foi criada automaticamente pelo software de entrega de e-mails. Uma mensagem que você enviou não pôde ser entregue a um ou mais destinatários. Este
    • إلغاء الإشتراك

      أريد إلغاء الإشتراك نهائياً.
    • Opening two notes at once in the Mac app

      Just like the title says - I want two notes open the same time on my Mac Air. AI search seems to think I have the option to open one window, then click on a second one. But of course if one window is open I can't see the others. It also recommended using
    • Introducing the Employee Portal for internal job posting

      Employee referrals and internal applications are one of the most trusted hiring channels. But in many organizations, employees only hear about openings through messages, word of mouth, or after the role has already been open for a while. When employees
    • Next Page