Feedback

Feedback lets lead recipients report what happened to a lead after delivery: a conversion when the lead progressed through a lifecycle stage, or a return when the lead is given back. Feedback events power conversion reporting, including the per-stage columns on the Connections Report.

Submit feedback for a lead

Reports what happened to a lead after delivery. Recipients use this endpoint to send a conversion (the lead progressed through a lifecycle stage, such as Appointment Set or Sale Closed) or a return (the lead is being given back, with the reason why).

The event_id query parameter identifies the delivery event the feedback refers to. It is generated when a Delivery step handles the lead and must be shared with the recipient along with the lead data. Because the event ID authorizes the request, no API key is required.

The request body may be sent as JSON, XML, or form encoding; set the Content-Type header accordingly, or the request is rejected. The response is JSON by default, or XML when requested via the Accept header.

A 201 means the submission was processed, not that it was accepted. Feedback that fails the step's acceptance criteria, or that arrives after the lead was already returned, also comes back 201, with outcome: "failure" in the body. Always check outcome rather than the status code.

Feedback must be enabled on the delivery step before recipients can use this endpoint. See Enabling a Recipient to Send Conversion Feedback to LeadConduit and Sending Feedback to LeadConduit in the help center.

Request
query Parameters
event_id
required
string (ID) ^[0-9a-fA-F]{24}$

The ID of the delivery event the feedback refers to, shared with the recipient when the lead was delivered.

Example: event_id=5fd4371e940df5a34a3888b2
Request Body schema:
required

The feedback to record for the lead.

type
required
string

The kind of feedback. Use conversion when the lead progressed to a lifecycle stage, or return when the lead is being given back.

Enum: "conversion" "return"
reason
string

For a conversion, the name of the lifecycle stage the lead reached (for example Appointment Set or Sale Closed). For a return, the reason the lead is being returned (for example Wrong number).

Optional. A submission without a reason is accepted, but the reason is what the step's acceptance criteria are usually written against, so omitting it will often cause the feedback to be rejected with outcome: "failure".

occurred_at
string

When the status actually changed in your system, as an ISO 8601 timestamp. Optional; when omitted, LeadConduit stamps the feedback with the time it was received. Use this when feedback is sent in batches, so the lifecycle date reflects the CRM event rather than the upload.

Timezone-naive values (2026-05-30T08:00:00) and date-only values (2026-05-30) are read as UTC. A value that cannot be parsed as ISO 8601 is ignored — the feedback is still accepted, LeadConduit falls back to receipt time, and an occurred_at_warning variable is recorded on the feedback-received event so the misconfiguration is visible in the event log.

Responses
201

The feedback submission was processed. Check the outcome field to see whether it was accepted — a submission rejected by the step's acceptance criteria, or one sent for a lead that was already returned, is also reported here with outcome: "failure".

400

Either the type field is missing or is not one of conversion and return, in which case the body is the usual feedback result with outcome: "error", or the request body could not be parsed as the MIME type given in the Content-Type header, in which case the body is plain text describing the parse failure.

403

Feedback has not been configured on the flow step that delivered the lead.

404

No event was found for the given event_id, or the event is more than 90 days old.

406

The Accept header asks for a format that cannot be produced, or the Content-Type header names a MIME type that is not supported. Use application/json, application/xml, text/xml, or application/x-www-form-urlencoded.

409

Feedback is configured on the flow step but currently switched off. This is distinct from the 403, which means feedback was never configured at all.

413

The request body is larger than the 10 MB limit.

415

The request has a body but no Content-Type header.

422

The event_id is not a valid ID, or it refers to the wrong kind of event (for example a lead ID, or a non-recipient event).

post/feedback
Request samples
{
  • "type": "conversion",
  • "reason": "Sale Closed",
  • "occurred_at": "2026-05-30T08:00:00Z"
}
Response samples
{
  • "outcome": "success",
  • "reason": "string",
  • "price": 0,
  • "lead": {
    • "id": "5fd4371e940df5a34a3888b2",
    • "first_name": "Joe",
    • "last_name": "Blow",
    • "email": "joeblow@gmail.com",
    • "phone_1": "5125551212"
    }
}

Submit feedback for a lead using query parameters

An alternative to POST /feedback for senders that cannot issue a request body. The feedback fields are read from the query string alongside event_id. Behavior is otherwise identical to the POST form, including the caveat that a 201 reports the submission was processed, not that it was accepted.

Request
query Parameters
event_id
required
string (ID) ^[0-9a-fA-F]{24}$

The ID of the delivery event the feedback refers to, shared with the recipient when the lead was delivered.

Example: event_id=5fd4371e940df5a34a3888b2
type
required
string

The kind of feedback being given.

Enum: "conversion" "return"
reason
string

The lifecycle stage the lead reached, or the reason it is being returned. Optional, but usually what the step's acceptance criteria are written against.

Example: reason=Sale Closed
occurred_at
string

When the status changed in your system, as an ISO 8601 timestamp. Defaults to the time LeadConduit received the feedback.

Example: occurred_at=2026-05-30T08:00:00Z
Responses
201

The feedback submission was processed. Check the outcome field to see whether it was accepted.

400

The type query parameter is missing, or is not one of conversion and return.

403

Feedback has not been configured on the flow step that delivered the lead.

404

No event was found for the given event_id, or the event is more than 90 days old.

406

The Accept header asks for a format that cannot be produced.

409

Feedback is configured on the flow step but currently switched off.

422

The event_id is not a valid ID, or it refers to the wrong kind of event.

get/feedback
Request samples
Response samples
{
  • "outcome": "success",
  • "reason": "string",
  • "price": 0,
  • "lead": {
    • "id": "5fd4371e940df5a34a3888b2",
    • "first_name": "Joe",
    • "last_name": "Blow",
    • "email": "joeblow@gmail.com",
    • "phone_1": "5125551212"
    }
}

Submit feedback for a lead using your own record ID

A variant of POST /feedback for recipients that did not keep the LeadConduit event ID. The lead is identified by the recipient_record_id you attached when you received it, typically the ID of the record in your CRM, and recipient_name selects the inbound feedback integration that understands your payload.

recipient_name is the suffix of an installed leadconduit-{recipient_name}.inbound.feedback integration module and is matched case-insensitively. Use standard for the generic payload: the same fields as POST /feedback, as JSON, XML, or form encoding, plus recipient_record_id. CRM-specific recipients such as salesforce accept the payload format of that system instead; see the integration's documentation for the fields.

As with POST /feedback, a 201 means the submission was processed, not that it was accepted; always check outcome. Feedback must be enabled on the delivery step, and no API key is required.

Request
path Parameters
recipient_name
required
string

The name of the inbound feedback integration that will parse the request, for example standard.

Example: standard
Request Body schema:
required

The feedback to record for the lead, in the format the named integration expects. The standard format is documented here.

type
required
string

The kind of feedback. Use conversion when the lead progressed to a lifecycle stage, or return when the lead is being given back.

Enum: "conversion" "return"
reason
string

For a conversion, the name of the lifecycle stage the lead reached (for example Appointment Set or Sale Closed). For a return, the reason the lead is being returned (for example Wrong number).

Optional. A submission without a reason is accepted, but the reason is what the step's acceptance criteria are usually written against, so omitting it will often cause the feedback to be rejected with outcome: "failure".

occurred_at
string

When the status actually changed in your system, as an ISO 8601 timestamp. Optional; when omitted, LeadConduit stamps the feedback with the time it was received. Use this when feedback is sent in batches, so the lifecycle date reflects the CRM event rather than the upload.

Timezone-naive values (2026-05-30T08:00:00) and date-only values (2026-05-30) are read as UTC. A value that cannot be parsed as ISO 8601 is ignored — the feedback is still accepted, LeadConduit falls back to receipt time, and an occurred_at_warning variable is recorded on the feedback-received event so the misconfiguration is visible in the event log.

recipient_record_id
required
string

The ID under which you stored the lead in your own system, as sent with the lead when it was delivered.

Responses
201

The feedback submission was processed. Check outcome to see whether it was accepted.

400

The type field is missing or is not one of conversion and return, or the request body could not be parsed by the integration.

403

Feedback has not been configured on the flow step that delivered the lead. The body is produced by the integration.

404

Either no inbound feedback integration is installed for recipient_name, or the request carried no recipient_record_id, or no delivered lead matches it (events older than 90 days are no longer available). In the last two cases the body is a feedback result produced by the integration with outcome: "failure" and the reason.

406

The Accept header asks for a format the integration cannot produce.

409

Feedback is configured on the flow step but currently switched off.

413

The request body is larger than the 10 MB limit.

415

The request has a body but no Content-Type header.

post/feedback/{recipient_name}
Request samples
{
  • "type": "conversion",
  • "reason": "Sale Closed",
  • "occurred_at": "2026-05-30T08:00:00Z",
  • "recipient_record_id": "54321"
}
Response samples
{
  • "outcome": "success",
  • "reason": "string",
  • "price": 0,
  • "lead": {
    • "id": "5fd4371e940df5a34a3888b2",
    • "first_name": "Joe",
    • "last_name": "Blow",
    • "email": "joeblow@gmail.com",
    • "phone_1": "5125551212"
    }
}