Skip to main content
The Webhook step in an automation sends an HTTP request to a URL you control whenever a contact reaches that point in the flow. It’s the bridge from Retainful’s marketing logic back into your stack.

What you can do with it

  • Notify your backend when a customer enters a win-back flow, so support sees it in your CRM.
  • Post to a Slack webhook when a VIP segment member abandons a large cart.
  • Trigger a fulfillment-side action — add a gift, flag an account — when a flow milestone is reached.
  • Feed your data warehouse with flow progress, joined later against revenue.

Configure a webhook step

  1. In the automation canvas, add a Webhook step where you want the call to fire.
  2. Enter the URL of your endpoint (HTTPS).
  3. The step sends the contact and event context as a JSON POST body — the same data available to that point of the flow (contact profile fields, trigger event payload).

Building a reliable receiver

Express example
  • Respond quickly with a 2xx. Do slow work (database writes, third-party calls) after acknowledging, not before.
  • Expect retries and duplicates. Network blips can cause re-delivery — make your handler idempotent (dedupe on contact + step + timestamp).
  • Validate what you receive. Treat the payload as untrusted input; check the fields you depend on exist before using them.
  • Keep the URL secret-ish. Use an unguessable path or a query token (/hooks/retainful?token=...) and reject calls without it.

Inbound webhooks (into Retainful)

Going the other direction — your systems telling Retainful something happened — isn’t a webhook you configure; it’s the Events API. Store webhooks from Shopify and WooCommerce are managed automatically by the integrations and need no setup from you.