Pro plan. Stripe works through listeners (Wait for webhook), which are part of Pro and Agency (and the free trial). Anything you already have keeps working on every plan. See Plans and billing.
checkout.session.completed event, matched on the email the contact paid with. Paid: the sales follow-ups are skipped and a welcome message goes out. Not paid: a reminder.
How it connects: Stripe’s webhooks and the Checkout Session object. No Stripe key is stored in Kerux. The payload below comes from Stripe’s docs; check it with Listen for test event.
Before you start
- Stripe: any account can add webhook destinations.
- A payment link (or Checkout page) that asks for the customer’s email.
- An email on the contact: the match uses it. A contact without one goes to Home > Tasks when the payment arrives, for you to assign.
1. Add the waiting step
After the message with the payment link, add Wait for webhook:- One shared URL + a match rule: match
data.object.customer_details.emailto{{email}}. - Limit: 7 days.
- Click Listen for test event and copy the URL.
2. Add the webhook in Stripe
In Stripe, open Workbench > Webhooks, add a destination with the Kerux URL and pick the eventcheckout.session.completed. Send a test event (or make a test payment) so Kerux shows a sample.
The event’s shape (from Stripe’s docs, trimmed):
{{steps.<step>.payload.data.object.amount_total}} (in cents) and {{steps.<step>.payload.data.object.payment_status}}.
3. Branch
- received: skip the sales steps and send a welcome message (or Send to another campaign for onboarding).
- timed out: one friendly reminder, then notify the owner.
Test with one contact
Use Stripe’s test mode: put your own email on a test contact, run Test on one contact from the Builder, and pay the test link with that email. The contact’s journey shows the delivery and the branch.Common errors
The payment arrives but no contact continues
The payment arrives but no contact continues
The email paid with doesn’t match a waiting contact. It goes to Home > Tasks for you to assign; nobody continues by mistake.
Stripe shows failed deliveries
Stripe shows failed deliveries
The URL was copied incompletely or the step was deleted. Copy it again from the step.
Other Stripe events arrive
Other Stripe events arrive
Only
checkout.session.completed is needed. Remove other events from the destination; unmatched ones are stored, not acted on.