prospect_response
Sent to a campaign's webhooks when a prospect replies.
Victoria AI sends this event as an HTTP POST with a JSON body when a prospect replies to a campaign. It goes to every enabled webhook on that campaign at the same time. Register one with Create a webhook.
Delivery
- Your endpoint has 75 seconds to respond. An error status or a timeout counts as a failure.
- If every webhook on the campaign fails, the delivery is retried every 15 minutes, up to 5 attempts within 48 hours.
- A reply is normally delivered once per lead. If a later reply from the same lead is positive after an earlier one wasn't, it's delivered again with a new
idempotency_key, because the message is part of the key. - Retries of the same delivery carry the same
idempotency_key. Record the keys you've processed and skip repeats.
Signatures
When the webhook has a signing secret, each delivery carries X-Signature-256: sha256=<hex>: an HMAC-SHA256 of the raw request body, keyed with the secret. Recompute it over the exact bytes you received, before parsing the JSON. Set or rotate the secret with Set or rotate a webhook secret.
Request headers
| Header | Description |
|---|---|
Content-Type |
|
X-Signature-256 |
|
Payload
eventstringRequiredEvent type
Example"prospect_response"idempotency_keystringRequiredSHA-256 hex digest (64 characters) of the sequence lead, campaign, channel and prospect message. Identical on every redelivery of the same reply; a different reply from the same prospect gets a new key
exactly 64 charactersExample"f3a1c9d2b8e7460a91d0a25f3e7b4c1d6f8a92e0b4c1d6f8a92e0b4c1d6f8a92"sequence_lead_idstring · uuidRequiredID of the sequence lead this response relates to
Example"550e8400-e29b-41d4-a716-446655440000"timestampstringRequiredWhen the delivery was built: ISO 8601, UTC, with a
+00:00offset and microsecondsExample"2025-01-14T19:30:00.123456+00:00"channelstringRequiredCommunication channel: 'email' or 'linkedin'
Example"email"senderobjectRequiredThe accounts assigned to send to this lead, keyed by channel. A channel is left out when no account is assigned, and the object is empty when the accounts can't be looked up.
Show 2 child attributesHide child attributes
emailobject or nullPresent when the lead has an email account assigned
Show 3 child attributesHide child attributes
account_idstringRequiredID of the connected email account that sent the outreach.
Example"xyz789-id"platform_usernamestringRequiredAccount username (typically the address)
Example"jane@yourcompany.com"emailstringRequiredSender email address
Example"jane@yourcompany.com"
linkedinobject or nullPresent when the lead has a LinkedIn account assigned
Show 2 child attributesHide child attributes
account_idstringRequiredID of the connected LinkedIn account that sent the outreach.
Example"abc123-id"platform_usernamestringRequiredLinkedIn username/handle
Example"jane-smith-sdr"
leadobjectRequiredThe lead's details. A field the lead has no value for is
null.Show 11 child attributesHide child attributes
annual_revenueinteger or nullExample5000000companystring or nullExample"Example Corp"custom_fieldsobjectemailstring or nullExample"john.doe@example.com"employee_countinteger or nullExample50first_namestring or nullExample"John"industrystring or nullExample"Technology"last_namestring or nullExample"Doe"linkedin_profilestring or nullThe lead's LinkedIn profile URL
Example"https://linkedin.com/in/johndoe"titlestring or nullExample"VP of Sales"websitestring or nullThe lead's company website
Example"https://example.com"
ai_responseobjectRequiredThe AI Appointment Setter's analysis of the reply. When the reply wasn't analyzed, every field except
goalisnull, andgoalgives the reason.Show 14 child attributesHide child attributes
agent_actionstring or nullWhat the agent did with the reply: 'reply', 'wait', 'nudge', 'escalate', 'close' or 'skip'
Example"reply"agent_versioninteger or nullPresent (as 2) when the Appointment Setter agent handled the reply; absent on legacy payloads. Feature-detect on this field
Example2asset_deliveredboolean or nullAsset-first campaigns only: whether the page went out
Exampletrueasset_urlstring or nullAsset-first campaigns only: the personalised page that was sent
Example"https://pages.example.com/p/abc123"completeboolean or nulltruewhen the conversation has ended or should end, whether or not its goal was reached. Whenagent_versionis2, it'strueexactly whenconversation_statusis one of theclosed_values.Examplefalseconversation_statusstring or nullThe conversation's state after this reply.
awaiting_prospect: waiting for the prospect.needs_human: the AI Appointment Setter handed the conversation to your team.human_owned: someone on your team has taken it over.closed_won,closed_lost,closed_no_responseorclosed_escalated: the conversation has ended. A lead still on the older follow-up flow can showawaiting_followup. Handle values you don't recognize without failing.Example"awaiting_prospect"escalation_reasonstring or nullWhy the agent handed the conversation to a human, when it did
first_message_modestring or nullAsset-first campaigns only: how the first message was sent
Example"asset"goalstring or nullThe campaign goal the responder is working toward, or the skip reason
Example"Schedule a demo"goal_statusstring or nullProgress toward the meeting goal: 'not_sent', 'link_sent', 'soft_commit', 'confirmed' or 'declined'
Example"link_sent"out_of_officeboolean or nullExamplefalseresponder_messagestring or nullThe reply the responder sent, or null when nothing was sent
Example"Thank you for your interest! I'd be happy to schedule a demo for you."sdr_briefstring or nullExample"Prospect expressed interest, recommend scheduling demo within 24 hours."sentimentstring or null'positive', 'neutral' or 'negative'
Example"positive"
campaignstring or nullThe campaign's name. The payload doesn't include the campaign's ID.
Example"Q1 2024 Outbound Campaign"conversation_ownerstring or nullPresent only when the conversation has an owner: 'victoria' when Victoria's responder is handling replies, 'lp_responder' when an external responder is. Receivers that reply to prospects themselves should stay out of conversations Victoria owns
Example"victoria"prospect_messagestring or nullThe prospect's reply, as received
Example"Hi, I'm interested in learning more about your product."variationstring or nullA/B arm the lead is in: 'a', 'b', or null when the lead has none
Example"a"