The moment it happens
Hear about every Keap payment as it lands
When a customer pays, Slack shows who paid and how much.
- Runs
- The moment it happens
- Apps
- Keap
- AI
- Not needed
- Access
- PAT
Send this to your assistant
Create a ClickRuntime automation: each time a payment is recorded in Keap, post the customer name and amount to #sales in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A bookkeeper or owner who runs invoicing in Keap often learns that a customer paid only by logging in and scanning the order list, or by checking the bank feed days later. Meanwhile a client whose payment cleared on Tuesday is still receiving reminder emails on Thursday, and the person who should start the work is waiting for confirmation that never reaches them.
As soon as Keap records a payment, Keap notifies ClickRuntime, which fetches the payment details and posts a message to Slack with the amount, the contact it belongs to and the invoice or order it applies to. The team sees the money arrive while it is still news, without anyone running a report.
It works well for coaching programs, agencies and course sellers who take payments throughout the day and want the right person to know at once.
What you get out of it
Work starts as soon as money lands
If delivery depends on payment, such as onboarding a new client or sending course access, a Slack post tells the responsible person right away. Customers who paid are not left waiting while the team assumes payment is pending.
Reminders stop going to people who paid
When the finance owner sees a payment appear, they can pause a collections email or call before it goes to a customer who already settled. That protects a relationship you just spent effort winning.
Small wins are visible to the team
Salespeople and coaches like seeing proof that payments are coming in. A running feed of amounts builds a sense of momentum without anyone having to compile a summary. It also gives your team a reason to talk about what is working.
Odd amounts get questioned quickly
A payment for a different amount than expected, or one that appears twice, is obvious when it is posted as it happens. Fixing a mistake the same day beats finding it during month-end reconciliation.
Reconciliation has a timestamped trail
The Slack channel becomes a dated list of payments with contact names, which you can compare against Keap and your bank statement when the books are closed. It narrows down where a discrepancy began.
How it works
What happens, step by step
When a payment is recorded against an invoice in Keap, Keap tells ClickRuntime straight away.
ClickRuntime looks up the payment amount and the customer who paid.
It posts a one-line message to #sales in Slack with the customer's name and the amount paid.
Before it runs live
- Connect Keap
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Keap steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, notify, http
API = "https://api.infusionsoft.com/crm/rest/v1"
@on_event
def handle(event):
headers = {"X-Keap-API-Key": credentials.secret("KEAP_PAT")}
for obj in (event.json or {}).get("object_keys", []):
tx = http.get(f"{API}/transactions/{obj['id']}", headers=headers).json()
contact = http.get(f"{API}/contacts/{tx['contact_ids'][0]}", headers=headers).json()
notify.slack(f"Payment: {contact.get('given_name', '')} {contact.get('family_name', '')} "
f"paid ${tx['amount']:,.2f}", channel="#sales")
return {"posted": len((event.json or {}).get("object_keys", []))}FAQ
Common questions
Does it post payments, invoices or both?
Will refunds or failed payments show up as well?
Can it post only payments above a certain amount?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post new Keap contacts to Slack
Each new contact shows up in Slack with their name, email and where they came from.
See how it worksGet alerted when a contact is tagged Hot lead
As soon as someone gets the 'Hot lead' tag, I see it in Slack and can call them.
See how it worksPost new orders and sign-ups to Slack
When something happens in your shop, app or form, the details land in the right channel straight away.
See how it worksKeep exploring
Set up “Hear about every Keap payment as it lands” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
