Parsley provisions 13 contact properties in your Resend account, then upserts contacts and fires a parsley.lead.scored event every time a chatbot conversation is scored.
Build Resend Segments and Automations on first-party intent signals. Parsley provides the signal. Resend provides the engine. No middleware, no proprietary SDK.
Free to start - no credit card required
A one-way signal flow from Parsley to Resend. When a visitor chats with the AI on a Parsley profile, the conversation is scored - lead quality, intent stage, MEDDIC evidence, topics. The integration writes those signals to Resend in two ways:
parsley_-prefixed properties attached.parsley.lead.scored fires on every turn, carrying lead quality, intent score, and conversation context. Resend Automations subscribe by name.The customer composes broadcasts and automations on top of those primitives. Parsley never sends email through your account.
All keys are alphanumeric + underscore, max 50 chars - Resend property constraint compliant. Type is string or number (Resend does not support boolean).
| key | type | value |
|---|---|---|
| parsley_lead_quality | string | hot | warm | cold |
| parsley_intent_signal | string | high_intent | evaluation | research | support |
| parsley_intent_score | number | 1-5 (1 = Cold, 3 = Warm, 5 = Hot), recomputed every turn |
| parsley_topics | string | Comma-separated topic list |
| parsley_meddic_metrics | string | "true" | "false" |
| parsley_meddic_economic_buyer | string | "true" | "false" |
| parsley_meddic_decision_criteria | string | "true" | "false" |
| parsley_meddic_decision_process | string | "true" | "false" |
| parsley_meddic_identify_pain | string | "true" | "false" |
| parsley_meddic_champion | string | "true" | "false" |
| parsley_question_count | number | Visitor messages in conversation |
| parsley_last_interaction | string | ISO 8601 timestamp |
| parsley_profile_slug | string | Which Parsley profile they engaged |
Event name: parsley.lead.scored. Identifier: email (Resend resolves to contactId on lookup).
{
"event": "parsley.lead.scored",
"email": "alex@acme.com",
"payload": {
"leadQuality": "hot",
"intentSignal": "high_intent",
"intentScore": 5,
"profileSlug": "peter",
"conversationId": "conv_abc123"
}
}Three patterns to put the primitives to work in Resend.
In the Resend dashboard, create an Automation with trigger type Custom event and event name parsley.lead.scored. Add a condition step:
payload.leadQuality == "hot"
AND payload.intentScore >= 4Use the property names directly in Resend Segment queries:
// Resend Segment: "Hot leads, this week"
parsley_lead_quality = "hot"
AND parsley_last_interaction > now() - 7dReference Parsley properties in any Resend template using merge-tag syntax:
Hi {{ first_name }},
I saw you were asking about {{ parsley_topics }} -
{{ #if (eq parsley_intent_signal "high_intent") }}
sounds like you're close to a decision. Worth a 15-min call?
{{ else }}
happy to share a quick walkthrough whenever helpful.
{{ /if }}Connect once, contacts and events flow continuously.
In your Resend dashboard, go to API Keys and create a key with full access. The integration needs read/write on contacts, contact properties, and events.
Open Parsley, go to Integrations, find Resend, paste the API key. The connect screen fetches your audiences and asks you to pick one as the destination.
On connect, Parsley calls POST /contact-properties for each of the 13 keys. Existing keys are detected and skipped (idempotent). Nothing is deleted.
The connect screen has a Send test event button that pushes a sample contact and fires parsley.lead.scored into your audience. Check the contact appears with parsley_ properties populated.
Native, code-first integration. 13 contact properties + a parsley.lead.scored custom event - no middleware, no proprietary SDK.
Create a Parsley profile, connect Resend, and your next chatbot conversation lands as a scored contact. No credit card required.
Free to start - no credit card required