Weekly Adyen payment collection digest for HubSpot deals

By General Input

Every Monday at 9am, check every HubSpot deal with an outstanding Adyen payment link and post a Slack digest with paid totals, expired links, and the top unpaid deals.

Integrations

  • Adyen
  • HubSpot
  • Slack

Type

Agentic Task

Categories

  • Finance
  • Operations

Every Monday at 9am, run a payment collection digest so RevOps can see which outstanding Adyen payment links actually got paid last week, which ones are still active, and which ones expired without a payment. Trigger this on a cron schedule, weekly on Monday at 09:00 in the account's local timezone.

Step 1. Pull the working set from HubSpot. Use HubSpot Search Deals to fetch every deal where the custom property 'Adyen Payment Link ID' is set AND either the 'Payment Status' property is not yet 'Paid' OR the deal was updated in the last 30 days (so paid-this-week deals still get included in the roll-up). Ask for the fields the digest will need: deal id, deal name, amount, currency, close date, owner, HubSpot deal URL, the Adyen payment link id, and the current payment status.

Step 2. For every deal in that working set, call Adyen Get Payment Link with the stored payment link id to read the current link status. Adyen returns one of: active, expired, completed, paymentPending, paymentFailed. The link's underlying 'reference' is the HubSpot deal id from the sibling 'send payment link' workflow, which is how the two systems join up — trust that reference if the payment link id on the HubSpot deal is missing or stale. If a payment link cannot be found in Adyen (deleted, wrong id), note it in a separate 'needs attention' bucket rather than dropping it silently.

Step 3. Group the results into four buckets, using both the Adyen status and the deal's updated timestamp: (a) Paid last week — Adyen status is 'completed' AND the deal was updated within the last 7 days. (b) Still active — Adyen status is 'active' or 'paymentPending'. (c) Expired without payment — Adyen status is 'expired' or 'paymentFailed'. (d) Expiring soon — Adyen status is 'active' and the link's expiresAt is within the next 7 days. Track totals per bucket (deal count and summed amount by currency).

Step 4. Compose the digest and post it to the #revenue Slack channel with Slack Send a Message. The digest should be a narrative rollup, not a raw table — this is what makes it agent-flavoured. Structure it like this:

  • Header line with the week's totals across all buckets.

  • A single rolled-up line for paid deals in the form 'EUR 24,300 collected across 18 deals last week' — do NOT list them individually. If multiple currencies are in play, one rolled-up line per currency.

  • A bulleted list of expired links that need a fresh nudge, each linking back to the HubSpot deal (use the deal URL) with the deal name, amount, and owner.

  • A 'top three unpaid' callout — the three largest still-active or expiring-soon deals by amount, each with a HubSpot deal link and how many days the link has been open.

  • An 'expiring soon' short list so the team can chase before the link dies.

  • A 'needs attention' section for any payment link ids that could not be resolved in Adyen, so someone can investigate.

Step 5 (optional but on by default). For each deal where the Adyen status has diverged from the HubSpot 'Payment Status' property, call HubSpot Update Deal to write the current status back — map 'completed' to 'Paid', 'expired' to 'Expired', 'paymentFailed' to 'Failed', 'paymentPending' to 'Pending', 'active' to 'Active'. This keeps the CRM in sync without anyone editing records by hand. If the user prefers a read-only digest, they can turn this step off.

Formatting rules for the Slack message: use Slack mrkdwn (angle-bracket links like <https://app.hubspot.com/...|Acme renewal>), currency-format amounts with thousands separators and the currency code, keep the whole message under ~40 lines, and always link back to the HubSpot deal — never dump raw ids. If a bucket is empty, say so with one line ('No expired links this week') rather than omitting the section, so the digest reads the same every Monday.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredTurn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe reveals