Webhook-Triggered Sequencer — reactive personalized outreach on demand
Webhook in, personalized email out. When an upstream system has a lead ready, it POSTs to this agent's webhook URL — the agent reads the payload, writes one tailored email, pushes to Instantly, and notifies Slack. Stateless, on demand, no cron.
Build this with agnt_
Skip the copy-paste. We'll spin up a builder session prepopulated with this blueprint's spec — providers, schedule, database schema, and the questions the agent should ask you to personalize it for your product.
Sign up free · no credit card
The motion
The cron-based GTM Email Sequencer pulls leads from a table on a fixed schedule. This one is the opposite: it fires reactively. An upstream system (another agent, a Stripe webhook, a Calendly hook, a custom enrichment pipeline) POSTs a lead payload with rich context — and this agent writes a single hyper-personalized email and pushes it to Instantly immediately. Stateless: no workspace_db tables, no polling. The upstream system already persisted the lead; this agent just sends. Best for high-context, lower-volume flows where every lead arrives with bespoke notes the email should reflect. Optional A/B subject variant selection by user_id last-char so you can run subject experiments without code changes.
Cron-based sequencers wait for the next 5-min tick. This one fires the instant the upstream system has a lead ready.
The webhook sender provides company_description + qualification_notes + everything else the email should reflect. Personalization quality is set by what you POST.
No workspace_db. The upstream system owns lead persistence. This agent is pure transform: webhook in, email out.
Optional: last char of user_id deterministically picks between two subject styles. Run subject experiments by routing user IDs.
On-demand sequencer. Fires when an upstream system POSTs a lead. Reads the payload's rich context, writes one personalized email, pushes to Instantly, notifies Slack. No DB, no cron, no state. Best for low-volume / high-context flows.
Build this with agnt_
Skip the copy-paste. We'll spin up a builder session prepopulated with this blueprint's spec — providers, schedule, database schema, and the questions the agent should ask you to personalize it for your product.
Sign up free · no credit card
Or copy a prompt into another platform
Prefer to build with OpenClaw, Hermes, or Claude Code? Drop this prompt into your agent of choice — it seeds the goal, the agntdata endpoints to use, and a step-by-step plan.
You are helping me build a webhook-triggered sequencer. This is different from the cron-based GTM Email Sequencer: instead of polling a leads table on a schedule, this agent fires whenever an upstream system POSTs a lead payload to its webhook endpoint. Per fire: read the lead fields from the payload, write a single hyper-personalized email, push to Instantly via createLead, post a notification to Slack.
Use this pattern when you want sequencer firing to be reactive — every lead arrives with rich context and gets a tailored email immediately, not at the next 5-minute tick.
REFERENCE DOCS
- agntdata API documentation: https://agnt.mintlify.app/apis/overview
- agntdata Instantly integration: `createLead` (single-lead variant of bulkAddLeads)
- agntdata Slack connector: `slack_post_message`
ABOUT MY MOTION
- Product name: <YOUR PRODUCT>
- Product URL: <YOUR PRODUCT URL>
- Sender voice: <SENDER NAME, role at company, sign-off style>
- Instantly campaign id (UUID): <CAMPAIGN_ID>
- Slack channel for run notifications: <SLACK_CHANNEL_ID>
- The trigger: what upstream system POSTs to this agent? <UPSTREAM_TRIGGER — e.g. "another agnt_ agent emits a webhook when a qualified lead is ready", "Stripe new-customer webhook", "Calendly demo booked", etc.>
WEBHOOK PAYLOAD SHAPE
List the fields the upstream sender will POST. The agent reads them and substitutes into the email. A canonical shape:
- `signals.first_name` — lead's first name
- `signals.org_name` — their company
- `signals.website_url` — optional company URL
- `signals.company_description` — what their company does (sharpens personalization)
- `signals.qualification_notes` — why this person was targeted (tone calibration)
- `cta_url` — the link to put in the email (demo, claim, signup, …)
- `user_id` — for deterministic A/B subject-line selection (optional)
If your payload looks different, adapt the email template to your fields.
EMAIL FORMAT (under 100 words)
1. **Greeting** — "Hey <first_name>,"
2. **Hook** — one strong sentence that captures the *outcome* the lead gets. Made specific to their world via `signals.company_description` + `signals.qualification_notes`.
3. **CTA** — link the `cta_url`. One sentence max.
4. **Optional closer** — a single human line. Avoid emojis and corporate filler.
5. **Sign-off** — sender name + role.
NEVER:
- Reference what the lead "said", "posted", or "did" — that reads as AI-trying-too-hard.
- Compliment the lead or their company.
- Use filler ("I know you're busy", "given your focus on…").
A/B SUBJECT VARIANTS (optional)
If you pass a `user_id` in the payload, the agent picks between two subject styles deterministically based on the last char of the UUID:
- 0–4 → Variant A: personalized natural subject ("built an agent to find your next 100 leads at <company>")
- 5–f → Variant B: fixed evergreen subject (configured per deploy)
This lets you A/B test subjects without juggling code.
WHAT TO BUILD
- A webhook-triggered agent (claude-sonnet-4-6 — personalization quality matters here).
- One webhook endpoint exposed for upstream POSTs. Document the payload schema in the agent's description.
- Per webhook fire: parse payload → write email → createLead to Instantly → slack_post_message summary.
- No DB writes required — this agent is stateless; the upstream system already persisted the lead.
GUARDRAILS
- One email per webhook. If the payload arrives malformed, surface the error to Slack and skip the Instantly call.
- Don't loop or retry — webhook senders should handle retries. This agent does its work and returns.
- Every payload field must be substituted; never send a template with `<first_name>` unfilled.
When you're ready, ask me the ABOUT MY MOTION + WEBHOOK PAYLOAD SHAPE blocks.Paste into OpenClaw to scaffold this agent. Tweak the inputs and goal at the top of the prompt.
How to build it
7 steps. Each one links to the underlying agntdata endpoints — open them in a new tab to inspect parameters and pricing as you build.
One key + the Instantly and Slack connectors.
Install both connectors. Note your Instantly campaign id + Slack channel id.
List the fields your upstream sender will POST. Default shape includes signals.first_name, signals.org_name, signals.company_description, signals.qualification_notes, cta_url, user_id.
Meta-agent asks the product / voice / campaign / payload questions, deploys the agent + exposes one webhook endpoint.
Configure your sender (another agent, Stripe, Calendly, custom code) to POST to the URL on every qualified lead.
POST a sample payload via curl. Verify the email lands in Instantly + the Slack summary fires.
If your payloads include user_id, the agent will already split subjects by last-char. To turn this off, instruct the agent in the system prompt to always use Variant A or B.
Ship this blueprint today
One click spins up a builder session prefilled with this blueprint's spec. We'll ask you a handful of personalization questions, then generate the agent.
Related blueprints
Browse all →Hand any X username to this agent and get back a qualified, ICP-scored lead with a verified email and a resolved LinkedIn profile.
Hand any LinkedIn profile URL to this agent and get back a qualified, ICP-scored lead with a verified email and a website summary attached.
Give it a name + a domain (or a LinkedIn URL, or any combo of identifiers) — it returns a verified professional email or a structured failure. Three-step waterfall: agntdata orchestrator → Exa deep search → verifier. Stateless primitive, called by other agents.