# Sync Reply with a CRM

> Connect Salesforce, HubSpot, or Pipedrive — Default vs Custom profiles, sync steps with field, filter, and ownership mappings, pushing contacts to sequences, and the 2-hour sync cadence.

**Connect Salesforce, HubSpot, or Pipedrive natively, pick the Default profile or build Custom sync steps with field mappings, filtering rules, and ownership mappings, and optionally push synced contacts into sequences. Contact sync runs about every 2 hours with a manual Sync now option; Pipedrive triggers fire through webhooks in real time.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

## At a glance

| Aspect | Detail |
| --- | --- |
| **Outcome** | Contacts, statuses, and outreach activity consistent between Reply and the CRM, with synced contacts optionally flowing into sequences |
| **Required objects** | A CRM account with connect rights (Salesforce/HubSpot login, or a Pipedrive API key), [contacts](/specifications/contacts), a mapping plan |
| **Surfaces** | UI · REST API · MCP |
| **Key limit** | Automatic sync runs every 2-3 hours (Salesforce and HubSpot document every 2 hours); Sync now forces an immediate pass |
| **Stops on** | Activity for a contact that does not yet exist in both systems is not synced; converted Salesforce leads cannot be updated |
| **Does not** | Support multi-select picklist contact fields; sync manual LinkedIn tasks or historical LinkedIn activity; sync out-of-office and auto-reply emails |
| **Plans** | Ownership mappings require Team Edition (or a team owner in Private mode) |

## Goal

Reply and the CRM agree: contacts exist in both, outreach activity — emails, tasks,
calls, notes, LinkedIn steps — is visible to sales in the CRM, statuses and inbox
categories update lead statuses, and CRM contacts can flow straight into sequences.

## When to use this workflow

A CRM is the system of record for pipeline and Reply is the execution layer for outreach —
that is, most real deployments.

## What Reply provides

Native integrations with Salesforce, HubSpot, Pipedrive, and Copper CRM, plus Zapier for
everything else. Each native integration offers a **Default profile** (preset sync steps,
start immediately, not editable) and a **Custom profile** (your own steps, directions,
field mappings, filtering rules, and ownership mappings), a Logs tab, and a **Sync now**
button on top of the automatic cadence.

## What you must provide

The ownership decision per field and per direction (which system wins), the field-mapping
plan, and — in teams — the owner pairs that route synced contacts to the right people.

## Preconditions

Connect rights in the CRM (Salesforce and HubSpot connect via login; Pipedrive uses the
API key from its Settings → API page); Team Edition for ownership mappings; in teams, set
the integration up from the team owner's account and map the rest via ownership mappings.

## Flow

```text
connect CRM → choose Default or Custom profile
    → add sync steps (direction per step)
    → map fields → add filtering rules → map owners (Team Edition)
    → optional: People to sequence (pick sequence + step)
    → activate step toggles + integration toggle
    → automatic sync every 2-3 hours + Sync now · check Logs
```

## Step-by-step

1. **Connect the CRM.** Open the Integrations page, find your CRM, and click **Connect** — log in for Salesforce or HubSpot, or paste the Pipedrive API key. Native options are Salesforce, HubSpot, Pipedrive, and Copper CRM; other tools connect through Zapier.
2. **Pick the profile.** The **Default profile** ships preset sync steps and field mappings you cannot edit but can run immediately. The **Custom profile** lets you add as many steps as you need, flip each step's direction, and control mappings and filters per step.
3. **Add sync steps.** Contacts sync both directions (Salesforce Leads or Contacts ↔ People in Reply; HubSpot Contacts ↔ People; Pipedrive People ↔ People). Outbound activity steps push emails, tasks, calls, notes (Salesforce), and LinkedIn activities into CRM records; status steps map Reply contact statuses and inbox categories onto CRM lead statuses. Pipedrive does not sync LinkedIn activities. On HubSpot the four activity steps are named after what they produce — Calls in Reply ⟶ Contact Tasks in HubSpot, Tasks in Reply ⟶ Contact Tasks in HubSpot, Emails in Reply ⟶ Contact Logged Email in HubSpot, and LinkedIn Activities in Reply ⟶ Contact Tasks in HubSpot. On the Default profile you toggle them on; on the Custom profile you add each one through **Add sync step**, then toggle it on and click **Sync now**. Existing activity is carried over on that first pass, and later passes keep it current.
4. **Map fields.** Required mappings: Salesforce Contacts need First Name, Last Name, and Email; Salesforce Leads additionally map Company to Account; HubSpot needs first name and email; Pipedrive requires the full name field (first name alone is enough). Beyond those, map any standard or custom fields. Reply does not support multi-select picklist contact fields in Salesforce, HubSpot, or Pipedrive integrations.
5. **Add filtering rules.** Load a default filter (Opened, Replied, Bounced, Opted out, To call, Clicked) or a smart filter you saved on the People page, so only the right records sync. HubSpot-to-Reply filters support at most two rules per filter — one rule when a date filter is used. Date filters evaluate in UTC.
6. **Map owners (Team Edition).** In each step's Ownership mappings, pair CRM owners with Reply owners — **+ Add owner mapping** adds a pair and **Save and apply for all steps** copies the pairs everywhere. One pair is pre-set: the Reply account the integration was set up from and the CRM account it connected with. On the left of a pair, each owner can be selected only once and only from the team members you have access to; on the right, the same owner can appear several times. The mapping works in both directions — new CRM records are created under the mapped owner and existing ones have their ownership updated to match the rules, and the same holds for contacts arriving in Reply. Do not combine Owner ID filters with ownership mappings, and switch off Salesforce automatic assignment rules — both interfere.
7. **Push synced contacts into sequences.** On a CRM-to-Reply step, the People to sequence section appears below the owner mappings; each row reads Reply owner → sequence → step. **Ignore step delay** processes the contact as soon as the schedule opens; **Only for new records** skips updated records. One sequence per team member per sync step. Pick an owner who is not in the ownership mappings and nothing happens for that row — those people are not synced and never reach the sequence.
8. **For Pipedrive, wire triggers.** People sync via API every 2 hours; the Triggers & Activity section works through webhooks in real time. Events — email sent, opened, link clicked, replied, inbox category Interested or Negative, task completed, call logged, note added — fire actions in Pipedrive: record activity for the person or deal, create a deal in a chosen pipeline, or move a deal to the next stage. The **Task created** trigger covers tasks you create by hand on the Tasks page (To do, Call, LinkedIn, Manual email, Manual SMS, WhatsApp, or Meetings): switch it on, pick how the activity is recorded, and click **Save** — from then on each new manual task shows up as a planned activity on the Pipedrive person. Triggers do not create contacts and do not sync retrospectively.
9. **Activate and monitor.** Turn on each sync step's toggle and the integration's own toggle. Automatic sync runs every 2-3 hours; click **Sync now** to force a pass. The Logs tab shows what synced and how many records; a yellow dot next to the CRM means a sync is in progress. Synced contacts get a direct link to their CRM record in the contact card.

## What activity looks like on the CRM side

Activity steps use predefined field mappings — unlike contact fields, there is nothing to
configure per field. Plan the CRM side around what actually arrives.

### Reply activity in HubSpot

| Reply activity | HubSpot record | Predefined mapping |
| --- | --- | --- |
| Logged call | Logged call | Contact → associated record; call outcome Positive → Connected, To call → No answer, Negative → Wrong number; date and time of the call → date and time; call notes, the recording link, and the duration → description |
| Task | Contact task | Task type → task name; contact → associated record; sequence name (where there is one) and the message body or task description → description; due date → due date; task assignee → assigned to |
| Email — automatic, manual, or direct | Logged email | Task name → Manual email or Automatic email; contact → associated record; date and time of completion → date and time; sequence name, subject line, and email text → description; task assignee → logged by |
| LinkedIn activity from a sequence | Contact task | LinkedIn activity type (LinkedIn Message, Connect, InMail, Voice Message, and so on) → task name; contact → associated record; sequence name → description; date and time of completion → date and time; a voice-message file is attached to the record |

HubSpot users can see whether an email was outbound or inbound and which sequence and step
it came from, where that information exists. The LinkedIn account owner in Reply becomes
the HubSpot task owner; other tasks follow task assignee → HubSpot account. A manual email
task completed without actually sending is logged as a task rather than a logged email.

### How Pipedrive records a synced trigger or task

| Recording option | Result |
| --- | --- |
| Record activity for the person | The activity is recorded on the person's record — the default |
| Record activity for the deal | The activity is recorded on the deal associated with that contact in Pipedrive |
| Create a deal | A deal is created for that contact in the pipeline you pick from the drop-down, or in a new one |
| Move deal to the next stage | The deal moves one stage forward |
| Move deal to the specific stage | The deal moves to the pipeline and stage you choose |

## Failure conditions

- **Activity not syncing** — the contact must exist in both systems first; sync contacts before emails, tasks, or calls
- **Converted Salesforce leads** — they sync into Reply, but updates to a converted lead fail with an error in Logs
- **Field fights** — multi-select picklists are unsupported, and unmapped statuses do not transfer; map values explicitly in the Fields mapping block
- **Slow HubSpot syncs** — HubSpot API rate limits mean 10,000+ record syncs take considerable time
- **Owner conflicts** — Owner ID filters combined with ownership mappings, or Salesforce auto-assignment rules, can stop contacts from syncing correctly
- **Unmapped owner in People to sequence** — a row pointing at a Reply owner missing from the ownership mappings syncs nobody and enrolls nobody
- **Secondary email addresses** — where a contact carries several addresses, only emails sent to the primary one reach HubSpot
- **Manual LinkedIn work** — HubSpot receives automatic LinkedIn steps only; manual LinkedIn tasks, messages sent outside a sequence, and prospects' LinkedIn replies never arrive
- **Automatic tasks in Pipedrive** — the Task created trigger fires for manually created tasks only, so sequence-generated tasks are not logged this way

## Verification

Pick one test contact: create it in the CRM and confirm it appears in Reply after a sync
pass (or Sync now); enroll it and confirm the sequence email shows up on the CRM record
(Salesforce: Activity History); set an inbox category and confirm the mapped lead status
updates; check the Logs tab counts. With HubSpot activity steps on, complete one call or
task for that contact and confirm it lands on the HubSpot record as a logged call or a
contact task after the next pass. On Pipedrive, create one manual task and confirm it
appears as a planned activity on the person.

## Limits

- Automatic sync cadence: every 2-3 hours (Salesforce and HubSpot: every 2 hours); manual Sync now anytime
- Each email, task, and call syncs only once; out-of-office and auto-reply emails are not synced
- Calls become available for sync about 30 minutes after completion, so recordings are ready
- Tasks sync as completed only by default (toggle to include pending); CRM-side tasks default to medium priority, except in HubSpot, where synced tasks arrive with Priority None, Reminder No reminder, and Queue None
- LinkedIn activities: automatic steps only, and only those performed after the integration was enabled; Pipedrive does not sync them
- HubSpot tasks are distributed by task assignee → HubSpot account, and a LinkedIn task's owner is the Reply LinkedIn account owner
- Pipedrive Task created trigger: manually created tasks only, and only for people present in both Reply and Pipedrive
- Ownership mappings: one pre-set pair per integration — the Reply account that set it up and the CRM account it connected with; each owner on the left of a pair can be used once, owners on the right can repeat
- HubSpot-to-Reply filters: two rules per filter maximum, one with a date filter
- Multi-select picklist contact fields are not supported

## Related

- [Contact management](/capabilities/contact-management)
- [Contacts](/specifications/contacts)
- [Tasks](/specifications/tasks) — what the Pipedrive Task created trigger and the HubSpot task steps carry over
- [Process positive replies](/workflows/process-positive-replies) — what generates the statuses you sync
- [Contact deduplication](/behavior/contact-deduplication) — how synced records match existing ones

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — contacts and webhooks endpoints
- MCP: [agents.reply.io/mcp](https://agents.reply.io/mcp) — agents connect and configure integrations
