# How do you send companies that are hiring to Salesforce with Make?

> Source: https://www.rodz.io/en/guides/use-cases/job-offers-to-salesforce-with-make/
> Updated on 2026-10-12 · Peter Cools · Recipe · Job offers (hiring) · Salesforce

## Short answer

Rodz has no native Salesforce destination, so use Make. Build a scenario that starts on a custom webhook, paste its URL as the webhookUrl of a Job Offers signal, then add Salesforce modules: search the account by domain, create or update it, create the hiring manager as a lead and a task carrying the job offer. Every matching offer costs 2 credits.

## Key facts

- A job offer costs **2 credits** per lead, plus 0.5 credit per email found and 5 credits per phone found, charged on success only.
- Without persona targeting, `contact` is `""`: the lead is the hiring company. With it, Rodz adds a decision-maker at that company.
- A delivery that fails transiently (timeout or `5xx`) is retried; a `4xx` response is not.
- Rodz identifies **400,000+ signals a month** (July to September 2026 average).

Cost: 2 credits per lead (+0.5 credit per email found)

## Before you start

- A Rodz account with credits (the test account includes 100) and an API key (Integrations → API).
- A Make account and a Salesforce connection allowed to create accounts, leads and tasks.
- Your job criteria: titles to include and exclude, description keywords, locations, company size.

## Steps

### 1. Create the Make scenario and its webhook

In Make, create a scenario and pick the **Webhooks → Custom webhook** trigger. Add a webhook, name it (for example "Rodz job offers") and copy its URL. Make answers `200` on receipt, which is what Rodz expects.

### 2. Create the Job Offers signal with that URL

In Rodz, add the **Job Offers** signal and paste the Make URL in the webhook field. Filter on the titles that reveal your buyer’s need (for example "Account Executive", "Head of Sales" for a sales tool), company size and countries. With no location the search is worldwide: size the daily limit accordingly.

Turn on persona targeting if you want a decision-maker on top of the company. Keep the signal as a **draft** for now.

`Create it through the API (draft status)`

```bash
curl -X POST "https://api.rodz.io/api/v1/signals/job-offers" \
  -H "Authorization: Bearer $RODZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "SaaS companies hiring sales reps",
    "webhookUrl": "https://hook.eu1.make.com/your-webhook-id",
    "dailyLeadLimit": 40,
    "status": "draft",
    "config": {
      "jobTitleInclude": ["Account Executive", "Head of Sales"],
      "jobTitleExclude": ["Intern"],
      "locations": ["France", "Germany"],
      "companySizeFilters": ["51-200", "201-500"],
      "publishedDate": "7d",
      "enablePersonaTargeting": true,
      "targetPersonas": ["Sales Director"],
      "getEmails": true
    }
  }'
```

### 3. Teach Make the payload structure

In the webhook module, click **Redetermine data structure**: Make waits for a first message. Send it from Rodz with `POST /api/v1/signals/{signal_id}/test-webhook`. Make then records the `signal`, `contact` and `company` fields. Right after, add a **filter** that stops messages where `signal.is_test` is true.

`Send a test payload`

```bash
curl -X POST "https://api.rodz.io/api/v1/signals/$SIGNAL_ID/test-webhook" \
  -H "Authorization: Bearer $RODZ_API_KEY"
```

### 4. Create or update the Salesforce account

Add **Salesforce → Search Records** on the Account object, with a condition on the website (`company.website`). Follow it with a **Router**: when an account is found, **Update a Record**; otherwise, **Create a Record** (Account) with name, website, industry and headcount. The domain is the most reliable key against duplicate accounts.

### 5. Create the lead and the follow-up task

On the main route, add a filter "`contact.email` exists", then **Create a Record** on the Lead object (first name, last name, email, title, company). Finally add **Create a Record** on the Task object, related to the account, with the job title as subject and the offer link and date as description. Turn the scenario on, then set the Rodz signal to **Active**.

## Example payload

What the Make webhook receives for one offer, with persona targeting on (without it, `contact` is `""`).

```json
{
  "signal": {
    "id": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
    "name": "SaaS companies hiring sales reps",
    "type": "job_offers",
    "last_signal": "Job Offer",
    "last_signal_date": "2026-10-09",
    "job_offer_url": "https://jobs.example.com/offers/account-executive-12345",
    "job_offer_title": "Mid-Market Account Executive",
    "job_offer_location": "Lyon (France)",
    "job_offer_description": "We are hiring an Account Executive to own the full sales cycle...",
    "job_offer_date": "2026-10-07",
    "job_offer_published_date": "2026-10-07",
    "job_offer_source": "LinkedIn",
    "matched_keywords": "Account Executive"
  },
  "contact": {
    "lead_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "created_at": "2026-10-09T09:40:00+00:00",
    "first_name": "Thomas",
    "last_name": "Bernard",
    "email": "thomas.bernard@tech-corp.example",
    "phone": "",
    "title": "Sales Director",
    "location": "Lyon, Auvergne-Rhône-Alpes, France",
    "country_code": "FR",
    "city": "Lyon",
    "linkedin_profile_url": "https://www.linkedin.com/in/thomas-bernard-example",
    "sales_navigator_profile_url": "",
    "matched_persona": "Sales Director"
  },
  "company": {
    "name": "Tech Corp",
    "website": "https://tech-corp.example",
    "linkedin_url": "https://www.linkedin.com/company/tech-corp-example",
    "industry": "Software Development",
    "location": "Lyon, France",
    "employee_count": 140,
    "employee_range": "51-200",
    "hq_country_code": "FR",
    "hq_city": "Lyon"
  }
}
```

## Rodz → Salesforce field mapping

| Rodz field (payload)                                      | Salesforce object | Salesforce field              |
| --------------------------------------------------------- | ----------------- | ----------------------------- |
| `company.name`                                            | Account           | Account Name                  |
| `company.website`                                         | Account           | Website (lookup key)          |
| `company.industry`                                        | Account           | Industry                      |
| `company.employee_count`                                  | Account           | Employees                     |
| `company.hq_city`, `company.hq_country_code`              | Account           | Billing City, Billing Country |
| `contact.first_name`, `contact.last_name`                 | Lead              | First Name, Last Name         |
| `contact.email`, `contact.title`                          | Lead              | Email, Title                  |
| `company.name`                                            | Lead              | Company                       |
| `signal.job_offer_title`                                  | Task              | Subject                       |
| `signal.job_offer_url`, `signal.job_offer_published_date` | Task              | Description                   |
| `signal.name`                                             | Lead              | Lead Source or a custom field |

Salesforce’s Industry field is a picklist: when the Rodz industry is not in it, write it to a custom text field.

## Why a job offer is a buying signal

A company hiring for a function is investing in that function: an open sales role announces a need for sales tools, a data engineer role a need for data. The Salesforce task gives the rep the exact context (the offer and its date) to open the conversation.

If Pipedrive is your CRM, the destination is native: see [job offers to Pipedrive](/en/guides/use-cases/job-offers-to-pipedrive/).

## Troubleshooting

- **Make receives nothing**: the scenario must be on (or listening during the test) and the URL in the signal must be the Make webhook URL.
- **Salesforce error on Industry**: the value is not in the picklist; map it to a text field.
- **Leads without email**: persona targeting or email finding is off, or no email was found (not charged). The filter in step 5 then avoids creating an empty lead.

## Frequently asked questions

### Does Rodz have a native Salesforce integration?

Not among Rodz’s public destinations (HubSpot, Pipedrive, Google Sheets, lemlist, custom webhook...). For Salesforce, Rodz sends each lead to a webhook: Make, as here, or your own receiver that calls the Salesforce API.

### Does Make verify the Rodz HMAC signature?

Not with the standard Custom webhook module: it reads the JSON, not the raw bytes the signature is computed on. Keep the Make URL private. If every delivery must be verified, put the signed receiver from the [HMAC webhook recipe](/en/guides/api/webhook-receiver-hmac/) in front; it then forwards to Make or Salesforce.

### How do I avoid duplicate accounts in Salesforce?

Search the account by domain (`company.website`) before creating it, as in step 4. Rodz retries a failed delivery with the same `X-Webhook-Id` header: store it in a Make data store if you want to skip a second arrival.

### Lead or Contact in Salesforce?

A Lead fits cold prospecting: it is converted later. If the company is already a managed account, create a Contact linked to the account found in step 4 instead. Both are Create a Record modules with a different object.

### How many offers will I receive?

As many as your filters find, within the signal’s daily limit. Each offer delivered costs 2 credits. If volume is too low, the signal’s funnel (`GET /api/v1/signals/{signal_id}/funnel`) shows which filter removes the most offers.

## Sources

- [Rodz API reference: Job Offers signal, webhooks, test-webhook](https://api.rodz.io/docs)
- [Make: webhooks](https://help.make.com/webhooks)
- [Make: Salesforce app](https://apps.make.com/salesforce)
- [Salesforce: leads overview](https://help.salesforce.com/s/articleView?id=sf.leads_overview.htm)

## Related guides

- https://www.rodz.io/en/guides/use-cases/job-offers-to-pipedrive/
- https://www.rodz.io/en/guides/api/webhook-receiver-hmac/
- https://www.rodz.io/en/guides/api/poll-signal-leads/
