Skip to content

Two inboxes, two jobs: a failed-payment alert and a branded owner email

Make scenarios read notification emails and act on them with plain parsing and no AI: a failed guest payment becomes a Slack alert that says what to do next, and a vendor's visit notice becomes a branded email to the property's owners, photos attached.

Notifications & agent toolsFlow2026

Where this applies

Operations, support and property teams that receive templated notification emails from platforms and vendors.

runs across the two scenarios
5,236
errors, all on the build day
9

The problem

A great deal of operational information arrives as automated email: a platform saying a payment failed, a vendor saying a visit happened. Each needs a person, or an owner, to see it in a different and better form, quickly: a failed payment has a window in which it can still be fixed.

These emails are templated, which is the opportunity: a fixed subject or layout is data that can be parsed with no model to be wrong. The work is in everything around the parse: duplicates, replies, missing recipients, time zones.

What we built

01

The subject line is the data

The failed-payment alert extracts the platform, guest and property from the platform's fixed subject template with a single regular expression, and ignores thread replies with a filter on two modules so a conversation under the alert cannot raise a second one. The Slack message then carries what the guest-support team needs: who, where, which platform, when it was detected, and a checklist (contact the guest, give a 24-hour deadline, check the card or bank flags, retry).

02

The alert thread is the resolution log

Rather than a database, the thread itself records the outcome: staff reply RESOLVED, ESCALATE or PENDING. The source email is then labelled processed, which is also the scenario's memory of what it has already handled.

03

Labels as the memory

The owner-email scenario polls every fifteen minutes and excludes anything already labelled sent or skipped, so labels are its only state: no data store, and a notice that matches no property is labelled skipped and drops out of the queue instead of being retried forever.

04

Matching a property from a messy notice

The notice's HTML is parsed for the property, service date and service type, and the property is found in Airtable by street number and street name, tolerant of unit text. The owners linked to it are fetched, their first names are built into a greeting, and the regional support alias is copied in. The vendor's timestamp is parsed in the vendor's time zone and the owner's copy rendered in the owners' time zone, both set explicitly, so the date on the email is the date of the visit.

05

Photos that survive an image-blocking inbox

Every photo URL in the notice is extracted with a global regular expression, downloaded, and aggregated into both attachments and inline images in a table-based HTML layout, so the owner sees the photos whether or not their mail client loads remote images.

The outcome

  • Across the two scenarios: 5,236 runs and 5,599 operations. The failed-payment alert has 2,880 runs and no errors.

  • The owner-email scenario has nine errors, all on 11 September while it was being built and tested, and none since; its most recent run succeeded.

  • Neither uses a language model, so what they do on the thousandth run is what they did on the first.

Where it stops

Both depend on the sender keeping its email format stable: a changed subject or layout breaks the parse. If the payment-alert pattern does not match, the scenario still posts, with blank fields. In the owner-email scenario the message is sent before it is labelled, so a failure at the label step would send it twice, and a notice with no owner email or no photos stops without a label and is re-checked every fifteen minutes. Channels, labels and staff tags are fixed in the scenarios.

Built with

  • Make.com
  • Gmail
  • Slack
  • Airtable

Patterns used

  • Subject line as data
  • Labels as memory
  • Thread as resolution log
  • Photos attached and inline

Page copy drafted with AI assistance. Skofi is accountable for it. Editorial policy

Start here

Have something shaped like this?

If any part of the above resembles a problem you are living with, a short call is the fastest way to find out whether it is the same problem underneath.

Book a 15-minute callsaveez@skofi.tech

What happens on the call

  • 15 minutes, no deck
  • We map the process on the call
  • A written scope, or an honest no
Book a call