> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.supersend.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# SuperSend → Make → Salesforce Setup

# SuperSend → Make → Salesforce Setup

## Purpose

Send contact data from SuperSend into Make.com, which then syncs to Salesforce. Use this when you need events (replies, opens, contact added, etc.) in SuperSend to trigger CRM updates in Salesforce via Make.

**Replies vs noise:** Choosing **Reply** in SuperSend turns on that event type; it does not, by itself, teach Make what to do with other events or how to treat “good” vs “bad” replies. Use [Webhooks: Replies, Bounces, and CRM Automation](https://help.supersend.io/en/article/webhooks-replies-bounces-and-crm-automation-glg697/) for how SuperSend classifies inbound mail (`reply`, `bounce`, `autoresponse`) and how to reduce noise. This article adds **Make-specific** steps below.

## One webhook, many event types — filter in Make

- Each POST body includes **`type`** (for example `reply`, `open`, `click`, `contact_added`). That is how you know which event fired.
- If you enable **only** **Reply** in the Webhook integration, SuperSend still sends **only** reply events for that toggle—but if you also enable **Open**, **Click**, etc., **the same Make webhook URL receives every enabled event**. Your scenario should not assume every request is a reply.
- **Recommended for a “replies → Salesforce” flow:**
  1. In SuperSend, enable **Reply** and turn **off** events you do not want hitting this URL (often **Bounce** and **Autoresponse** if you only want human-style replies — see the article above).
  2. In Make, immediately after **Webhooks → Custom webhook**, add a **Router** (or a **Filter** on the path to Salesforce) so the Salesforce module runs **only when** `type` equals `reply` (or whatever event you intend).
- **Optional — only certain replies:** For `type: "reply"`, SuperSend includes **`reply.category`** (intent, e.g. `interested`), **`reply.mood`**, **`reply.confidence`**, plus **`reply.text`** and **`reply.subject`**. Add another Router branch or Filter (e.g. `reply.category` equals `interested`) before creating or updating Salesforce records.

Use **Test →** on the Reply event and **Webhook delivery logs → View Payload** to confirm the exact paths in your bundle.

## Field Mapping

| Salesforce Field | Webhook payload path | Notes |
|-----------------|----------------------|-------|
| First Name | `contact.first_name` | |
| Last Name | `contact.last_name` | |
| Company | `contact.company_name` | |
| Email | `contact.email` | |
| Phone | `contact.phone` | |
| Gross_Monthly_Revenue_Dropdown__c | Under `contact.custom` — use the same name you gave the field in SuperSend | When present; see example below |
| (e.g. Task description, custom field) | `reply.text`, `reply.subject` | Present when `type` is `reply` |
| (e.g. routing or scoring) | `reply.category`, `reply.mood`, `reply.confidence` | Present on many `reply` events when AI classification ran; use in Filters |

**Custom fields:** Any custom data you add to contacts (via CSV or API) is sent in the webhook under `contact.custom`. The field name in the webhook matches whatever you named it when adding the contact—your CSV column header or the key you used in the API.

---

## Step 1: Add Custom Fields in SuperSend

### Option A: CSV Upload

1. Add a column to your CSV (e.g. `Gross_Monthly_Revenue_Dropdown__c` or any name you prefer).
2. During CSV import, map that column to **Custom Field** (not a standard field).
3. When the webhook fires, that data is sent under `contact.custom` using the column name as the field name.

### Option B: API

When creating contacts via API, include custom fields:

```json
{
  "email": "john@acme.com",
  "first_name": "John",
  "last_name": "Doe",
  "company_name": "Acme Corp",
  "phone": "+1234567890",
  "TeamId": "your-team-id",
  "CampaignId": "your-campaign-id",
  "custom": {
    "Gross_Monthly_Revenue_Dropdown__c": "100k-500k"
  }
}
```

---

## Step 2: Configure Webhook in SuperSend

1. Go to **Campaign** → **Settings** → **Integrations**.
2. Add a **Webhook** integration.
3. Enter your Make.com webhook URL (from Step 3).
4. Enable the events you need:
   - **Contact Added** — when contacts enter the campaign
   - **Reply** — when a contact replies
   - **Open** — when an email is opened
   - **Click** — when a link is clicked
   - **Finished** — when contact completes the sequence
5. Save.

---

## Step 3: Create Make.com Scenario

1. In Make, create a new scenario.
2. Add **Webhooks** → **Custom webhook** as the trigger.
3. Copy the webhook URL and paste it into SuperSend (Step 2).
4. If this scenario should **only** handle replies (or one event type), add a **Router** or **Filter** after the webhook so Salesforce runs only when **`type`** matches (e.g. `reply`). Add extra filters on **`reply.category`** if you only want certain intents.
5. Add **Salesforce** → **Create a record** (or **Update a record**).
6. Connect your Salesforce account in Make.
7. Map fields from the webhook to Salesforce:

   | Map from (Make) | To Salesforce |
   |-----------------|----------------|
   | `1.contact.first_name` | First Name |
   | `1.contact.last_name` | Last Name |
   | `1.contact.company_name` | Company |
   | `1.contact.email` | Email |
   | `1.contact.phone` | Phone |
   | `1.contact.custom.Gross_Monthly_Revenue_Dropdown__c` | Gross_Monthly_Revenue_Dropdown__c |
   | `1.reply.text` or `1.reply.subject` | Task description, note, or custom field (when event is a reply) |

8. In Make, use the data inspector on the webhook trigger to see the incoming data and map each field. The structure SuperSend sends is shown below. Activate the scenario.

---

## What SuperSend Sends to Make

When an event fires (reply, open, contact added, etc.), SuperSend sends a JSON payload to your webhook. Always check **`type`** first in Make.

**Example when the event is a reply** (`type: "reply"`) — `reply` carries the inbound message and optional AI fields for filtering:

```json
{
  "event_id": "a1b2c3d4-...",
  "timestamp": "2026-01-19T14:32:15.123Z",
  "type": "reply",
  "CampaignId": "campaign-uuid",
  "conversationId": "conv-uuid",
  "app_url": "https://app.supersend.io/...",
  "campaign": { "id": "...", "name": "..." },
  "team": { "id": "...", "name": "..." },
  "org": { "id": "...", "name": "..." },
  "reply": {
    "text": "Thanks, let's book a call next week.",
    "subject": "Re: Your outreach",
    "received_at": "2026-01-19T14:32:15.123Z",
    "category": "interested",
    "mood": "positive",
    "confidence": 0.92
  },
  "contact": {
    "id": "contact-uuid",
    "email": "john@acme.com",
    "first_name": "John",
    "last_name": "Doe",
    "company_name": "Acme Corp",
    "phone": "+1234567890",
    "title": "CEO",
    "custom": {
      "Gross_Monthly_Revenue_Dropdown__c": "100k-500k"
    }
  }
}
```

For **open**, **click**, **contact_added**, etc., the top-level **`type`** changes and the body includes different nested objects (for example `open`, `click`) instead of or in addition to `reply`. Use **Test →** per event to see each shape.

**Custom fields:** If you added custom data when importing the contact (CSV column mapped to Custom Field, or `custom` in the API), it appears in `contact.custom`. The key is whatever you named the field. If the contact has no custom fields, `contact.custom` may be empty or missing.

---

## Custom Fields Quick Reference

- **From CSV**: Add a column, map it to **Custom Field** during import. The column header is the field name in the webhook.
- **From API**: Include `custom: { "YourFieldName": "value" }` in your request. That key is the field name in the webhook.
- **In Make**: Use the webhook’s data inspector to see the incoming data. Custom fields appear under the contact object.

---

## Troubleshooting

- **Salesforce updates on opens/clicks when I only wanted replies**: You enabled multiple events in SuperSend, or your Make scenario has no **Filter** / **Router** on **`type`**. Restrict toggles in SuperSend and/or add `type` = `reply` before the Salesforce module.
- **Custom field empty or wrong path in Make**: In **Campaign Settings** → **Integrations** → **Webhook**, use **Test →** next to the event you care about (sample or real contact). Open **Webhook delivery logs** for that integration and use **View Payload** to see the exact JSON we sent. Verify your custom field appears under `contact` and note the exact field name you used.
- **Webhook not firing**: Check that the event (e.g. Reply, Contact Added) is enabled in the Webhook integration.
- **Salesforce API name**: Use the Salesforce API name (e.g. `Gross_Monthly_Revenue_Dropdown__c`), not the label.

## Related Articles

- [Webhooks: Testing, Delivery Logs, and Payloads](https://help.supersend.io/en/article/webhooks-testing-delivery-logs-and-payloads-dbmbkb/)
- [Webhooks: Replies, Bounces, and CRM Automation](https://help.supersend.io/en/article/webhooks-replies-bounces-and-crm-automation-glg697/)
- [Webhook Integration](https://blog.supersend.io/webhook-integration)
- [Zapier and Make Setup](https://help.supersend.io/en/article/zapier-and-make-setup-1k96iky/)
- [Integrations Overview](https://help.supersend.io/en/article/integrations-overview-r3pvl9/)
