> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Call people who reply in your outreach tool

> When a prospect replies with interest in Instantly, Smartlead, lemlist, Apollo, Outreach or a similar tool, send them to Salesfinity so a rep calls while the reply is fresh.

A prospect writes back "sounds interesting, call me Thursday". The sooner a rep calls, the likelier
your email is still on their mind. Send interested replies from your outreach tool to Salesfinity
with a tag, and the rep dialing that list calls them next, with the reply in front of them.

## When to use it

* Your cold email runs in Instantly, Smartlead, lemlist, Apollo, Outreach or a similar tool.
* Your tool marks replies as interested, or someone on your team does.

Sequences in the Salesfinity Sequencer? That's built in: see
[Replies to your sequences](https://docs.salesfinity.ai/workflows/sequencer-replies.md).

## What you need

* A list the rep dials, its `_id`, and an API key. See
  [Before you start](https://docs.salesfinity.ai/workflows/overview.md#before-you-start).
* A way for your tool to tell you about a reply: a Zapier or Make trigger, or a webhook.
* A phone number for the prospect, in your tool or added on the way. No number? Send the LinkedIn
  URL, and the rep can find a mobile number with [SmartEnrich](https://docs.salesfinity.ai/enrichment/contacts.md).

## Set it up

**1. Decide which replies get a call**

Send replies that ask to talk: interested replies, meeting requests, "call me". Leave out
out-of-office replies, "not interested", "remove me" and auto-replies. They don't want a call
now.

The simplest rule: trigger on the moment a lead is marked **Interested**, by your tool or by a
person, rather than on every reply.

**2. Catch the reply**

| Tool | In Zapier | In Make | Good to know |
| - | - | - | - |
| Instantly | **Instantly** → **New Event**, for a lead marked interested | **Instantly** → **Watch Events** | The event carries the reply text. Instantly's own webhooks (`lead_interested`) need the Hyper Growth plan or above. |
| Smartlead | No Smartlead app. Add a webhook in Smartlead (**Settings** → **Webhook** → **Add Webhook**) for lead category updates, sent to **Webhooks by Zapier** → **Catch Hook**. | **Webhooks** → **Custom webhook**, as the webhook's address | Keep the *Interested* category only. Webhooks need Smartlead Pro or above. The event carries the last reply. |
| lemlist | **lemlist** → **New Activity**, for a lead marked interested | **lemlist** → **Watch Activities** | lemlist's *interested* activity covers every channel. The reply text may not be included, so put the campaign in `notes`. |
| Apollo | No reply trigger in Zapier. In Apollo, build a **Workflow** with the **Email replied** trigger and the **Send webhook** action, to **Webhooks by Zapier** → **Catch Hook**. | **Webhooks** → **Custom webhook** | **Email replied** fires on every reply, so filter out the ones that aren't interested. Workflows depend on your Apollo plan. |
| Outreach | No reply trigger, in Zapier or in Outreach's own Triggers. | Not covered here | A developer can subscribe to Outreach's API webhooks for replies (resource `mailing`, action `replied`) and send the request from your own code. |

Something else? Look for a trigger or webhook for "lead marked interested" first, and "reply
received" second.

**3. Clean up the reply text**

The reply goes in `notes`, so the rep reads it before dialing. Fix three things first:

* **Plain text.** If your tool sends the reply as HTML too, map the plain-text version.
* **Length.** Notes hold 2,000 characters. Cut long replies, and quoted threads, with
  **Formatter** → **Text** → **Truncate** in Zapier.
* **Quotes and line breaks.** Typed into the JSON of a request, they make it invalid, and the
  API answers `400`. In Zapier, add **Formatter** → **Text** → **Replace** steps that replace
  `"` with `'` and remove line breaks (`[:newline:]`). In Make, set the request's **Body input
  method** to **Data structure**, so Make writes the JSON for you.

**4. Send the person to Salesfinity**

Use the tag `"Replied"`. Put the reply and the campaign in `notes`, for example
*Replied to "Q4 CFO outreach": 'Sure, call me Thursday after 2.'*

## What to send

| Field | From your outreach tool |
| - | - |
| `first_name`, `last_name` | The lead's name |
| `email` | The lead's email. Needed so the same person isn't added twice. |
| `company`, `title` | Company and job title |
| `phone_numbers` | `[{ "type": "mobile", "number": "+17205550148" }]`, in E.164 |
| `linkedin` | The LinkedIn URL, if your tool has it |
| `notes` | The campaign and the reply, at most 2,000 characters |
| `tag` | `"Replied"` |

```bash cURL theme={"system"}
curl https://client-api.salesfinity.co/v1/contact-lists/YOUR_LIST_ID \
  --request POST \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "first_name": "Dana",
    "last_name": "Ortiz",
    "email": "dana.ortiz@fernway.com",
    "company": "Fernway Logistics",
    "title": "VP Operations",
    "phone_numbers": [{ "type": "mobile", "number": "+17205550148" }],
    "linkedin": "https://www.linkedin.com/in/danaortiz",
    "notes": "Replied to \"Q4 ops outreach\": Sure, call me Thursday after 2.",
    "tag": "Replied"
  }'
```

```text Zapier theme={"system"}
1. Trigger: your outreach tool's trigger for an interested lead, or
   Webhooks by Zapier → Catch Hook for a webhook (see the table above).
2. Filter by Zapier: only interested replies, if the trigger fires on
   every reply.
3. Formatter → Text → Truncate the reply, and Replace quotes and line
   breaks.
4. Formatter → Numbers → Format Phone Number, to E.164.
5. Action: Webhooks by Zapier → Custom Request
   Method:  POST
   URL:     https://client-api.salesfinity.co/v1/contact-lists/YOUR_LIST_ID
   Headers: x-api-key     YOUR_API_KEY
            Content-Type  application/json
   Data:    the JSON from the cURL tab, with the lead's fields and the
            reply mapped into it, and "tag": "Replied".
```

```text Make theme={"system"}
1. Trigger: your outreach tool's module for an interested lead, or
   Webhooks → Custom webhook for a webhook from your tool.
2. Filter: only interested replies.
3. Action: HTTP → Make a request
   URL:               https://client-api.salesfinity.co/v1/contact-lists/YOUR_LIST_ID
   Method:            POST
   Headers:           x-api-key = YOUR_API_KEY
   Body content type: application/JSON
   Body input method: Data structure, shaped like the JSON in the
                      cURL tab (Make can generate it from that sample)
   Body:              the lead's fields and the reply mapped in, and
                      "tag": "Replied".
```

## Test it

1. Start dialing the list, with your phone ready.
2. Put yourself in a test campaign with your own email and mobile number, and reply to the first
   email: "Sounds good, call me today."
3. Mark the reply interested in your tool, if it doesn't do so on its own.
4. Check that the notification shows, that **Next up** shows your name with the reply in the notes,
   and that your phone rings once the current call is logged.

## Good to know

* **Stop the emails too.** Make sure your outreach tool stops the sequence when someone replies,
  so the prospect doesn't get the next email after your rep's call.
* **One rep per mailbox or campaign.** If several reps send, route each reply to the list of the
  rep who owns the campaign or mailbox. In Zapier, a **Formatter** → **Utilities** → **Lookup
  Table** step turns the sender's email into a list ID.
* **Already import from this tool?** Salesfinity also [connects](https://docs.salesfinity.ai/integrations/overview.md) to
  Apollo, lemlist, Smartlead and other tools to import who to call. Keep that for the cadence.
  This workflow is for replies that shouldn't wait for the next import.
* **The same person twice.** If they're already on the list, they move to the top and take the
  tag, but keep their notes from the first time.

For errors and what the rep sees, see
[Troubleshooting](https://docs.salesfinity.ai/dialer/speed-to-lead.md#troubleshooting) in the speed-to-lead guide.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.