Close Zoho CRM deals automatically when Stripe payments land

When a Stripe payment succeeds, find the matching open Zoho CRM deal, mark it closed-won with the real amount, and post a celebration in Slack.

Agentic Task
StripeZoho CRMSlack BotSalesFinanceNotifications & AlertsData Sync

Build an agent workflow that closes a Zoho CRM deal as won and announces it in Slack whenever a Stripe payment succeeds for new business.

Trigger: a Stripe webhook for charge.succeeded (or payment_intent.succeeded). From the webhook payload, read the customer email, the charge amount, the currency, the charge ID, and the metadata. If anything is missing or ambiguous, call Stripe Retrieve Charge with the charge ID to confirm currency, amount, customer, and metadata.

Renewal filter: before doing anything else, check the charge metadata and any related invoice fields. If the charge is a renewal or recurring invoice (for example, billing_reason like subscription_cycle, an invoice with subscription set, or an explicit metadata flag like type=renewal), stop and do nothing. This workflow is only for new business wins.

Find the contact and the deal in Zoho CRM. Use Search Records on the Contacts module to locate the contact by email. Then use Search Records on the Deals module to find that contact's open deals (any stage that is not Closed Won or Closed Lost). If there is more than one open deal, prefer the deal whose Amount most closely matches the Stripe charge amount in the same currency. Briefly explain the choice in the agent's reasoning so the rep can follow it.

Update the matched deal with Zoho CRM Update Specific Record. Set Stage to "Closed Won", Closing_Date to today, and Amount to the actual paid figure from Stripe if it differs from the existing deal amount.

Announce the win in Slack with Slack Bot Send a Message to a configured wins channel. Write a short, celebratory, rep-facing message that includes: the deal owner's name (the rep), the customer name, the deal value (formatted with currency), and a one-line snippet pulled from the deal description for context. Keep it to two or three lines, tasteful emoji is fine.

Fallback when no open deal is found: do not silently drop the event. Use Zoho CRM Create Note on the contact with a short body like "Payment received from Stripe, no open deal found" plus the Stripe charge ID, amount, and currency. Do not post to the Slack wins channel in this case, because there is no deal to celebrate.

Configurable knobs to expose: the Slack wins channel, the tone and template of the celebration message, the renewal/recurring skip rule, and the tie-breaker the agent uses when a contact has multiple open deals.

Additional information

What does this prompt do?
  • When a customer's Stripe payment succeeds, finds the matching open deal in Zoho CRM and marks it closed-won with the real paid amount.
  • Posts a celebration to your wins Slack channel with the rep, the customer, the deal value, and a one-line note from the deal for context.
  • If no open deal matches the payment, leaves a short note on the contact in Zoho CRM so nothing slips through silently.
  • Skips renewals and recurring invoices so the wins channel only fires on new business, not subscription cycles.
What do I need to use this?
  • A Stripe account that can view charges and send webhook events.
  • A Zoho CRM account that can read Contacts and Deals and update deal records.
  • A Slack workspace with a wins channel where the celebration message should land.
How can I customize it?
  • Pick which Slack channel gets the celebration message and tweak the tone of the announcement.
  • Adjust how the workflow chooses between multiple open deals for the same customer.
  • Change which Stripe payments count as new business and which get skipped as renewals or recurring charges.

Frequently asked questions

What happens if the customer doesn't have an open deal in Zoho CRM?
Instead of dropping the payment, the workflow leaves a short note on the matching contact saying a payment came in with no open deal, so a rep can follow up and decide what to do.
Will this fire on renewals or subscription payments?
No. If the Stripe charge is flagged as a renewal or recurring invoice, the workflow skips it so the wins channel only celebrates new business.
What if a customer has multiple open deals when they pay?
The workflow prefers the open deal whose amount is closest to the Stripe charge. You can tune that rule to fit how your sales team works.
Does it update the deal amount if it differs from the original quote?
Yes. The deal amount is set to the actual paid figure, so your pipeline reflects what actually closed, not just what was originally quoted.
Can I send the celebration to a private Slack channel?
Yes, as long as the Slack bot is a member of that channel. Add the bot to your wins channel before turning the workflow on.

Stop refreshing Stripe to update your CRM.

Connect Stripe, Zoho CRM, and Slack once. Every successful payment closes the deal and rallies the team.