Home Action Reference Push Contacts, Leads, and Deals to Your CRM

Push Contacts, Leads, and Deals to Your CRM

Last updated on Jun 03, 2026

Push Contacts, Leads, and Deals to Your CRM

This article covers every action that writes data to a CRM or outreach tool, including exact inputs, outputs, and use cases by team type.

All actions in this article cost 0 credits per row.

Before you begin

Connect each integration before using its actions.

  1. Go to Settings > Integrations.
  2. Select the platform you want to connect.
  3. Enter your API key or complete the OAuth flow.

You need credentials for every platform you plan to use:

  • HubSpot: Private app token (requires CRM read/write scopes)
  • Pipedrive: API key from Settings > Personal Preferences > API
  • Zoho CRM: OAuth access token (generated in Zoho Developer Console)
  • LeadConnector: API key from your sub-account settings
  • Reply.io: API key from Settings > API
  • Instantly: API key from Settings > Integrations > API
  • Smartlead: API key from Settings > API
  • HeyReach: API key from Settings > Integrations

HubSpot

Create Contact (HubSpot)

Credits: 0Inputs

Field Required Notes
Email Yes Primary identifier
First Name No
Last Name No
Phone No Main phone
Mobile Phone No Mobile number
Job Title No
Company No Company name text
Website No
Lifecycle Stage No Select: subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist, other
City No
State No
Zip No
Country No
Address No Street address
Outputs

contact_id, created_resource_id, created_at, updated_at, archived, firstname, lastname, email, phone, lifecyclestage, website

Use cases

  • Agencies: Sync enriched prospect lists from TexAu waterfall runs into a client's HubSpot portal row by row.
  • Founder-led teams: Add anyone who replies to an outreach campaign into HubSpot automatically so no conversation goes untracked.
  • RevOps: Gate CRM entry on lifecycle stage: only create contacts that reach salesqualifiedlead or above.
  • GTM engineers: Pair with enrichment columns to land complete contact records (email + title + company) in a single workflow run.

Update Contact (HubSpot)

Credits: 0Inputs: Contact ID (required) + same optional fields as Create Contact above.

Outputs

id, created_at, updated_at, firstname, lastname, email, phone, mobilephone, jobtitle, company, lifecyclestage, city, state, zip, country, website, annualrevenue, numberofemployees

Use cases: Run on existing contacts after company enrichment to backfill annualrevenue and numberofemployees from Apollo or Hunter.io data.


Create Company (HubSpot)

Credits: 0Inputs

Field Required Notes
Company Name Yes
Domain No e.g. acme.com
Industry No Free text
Phone No
City No
State No
Country No
Website No
Outputs

company_id, created_at, updated_at, archived, name, domain, city, state, industry, phone, website, country

Use cases

  • RevOps: Auto-create company records after a prospect books a meeting. Prevents manual data entry.
  • GTM engineers: Pipe Enrich Company (Apollo) output directly into Company Name, Domain, Industry, and City columns, then write to HubSpot in the same workflow.

Update Company (HubSpot)

Credits: 0Inputs: Company ID (required) + same optional fields as Create Company.

Outputs: Same as Create Company outputs.


Create Deal (HubSpot)

Credits: 0Inputs

Field Required Notes
Deal Name Yes
Deal Stage No Select: appointmentscheduled, qualifiedtobuy, presentationscheduled, decisionmakerboughtin, contractsent, closedwon, closedlost. Default: appointmentscheduled
Pipeline No Default: default
Amount No Numeric value
Close Date No ISO 8601 format
Deal Type No Select: newbusiness, existingbusiness
Description No
Outputs

deal_id, created_at, updated_at, archived, dealname, pipeline, dealstage, amount, closedate, createdate, hs_lastmodifieddate, hubspot_owner_id

Use cases

  • Agencies: Create deals with stage qualifiedtobuy immediately when an account completes enrichment and meets ICP criteria: no manual entry from SDR.
  • RevOps: Auto-create newbusiness deals with a standard close date 30 days out for every high-intent inbound contact.

Delete and Merge Records (HubSpot)

Credits: 0

Action Required Inputs Output
Delete Contact (HubSpot) Contact ID status (boolean)
Merge Contacts (HubSpot) Primary Object ID, Object ID to Merge Merged contact record
Merge Companies (HubSpot) Primary Object ID, Object ID to Merge Merged company record
Merge Deals (HubSpot) Primary Object ID, Object ID to Merge Merged deal record

Pipedrive

Create Person (Pipedrive)

Credits: 0Inputs

Field Required Notes
Name Yes Full name
Email No
Phone No
Owner ID No Pipedrive user ID
Organization ID No Links person to an org
Visible To No Visibility setting
Marketing Status No Opt-in/out status
Add Time No YYYY-MM-DD HH:MM:SS
Outputs

id (person_id), name, first_name, last_name, primary_email, emails (array), phones (array), owner_id, owner_name, org_id, org_name, active_flag, visible_to, marketing_status, add_time, update_time, open_deals_count, closed_deals_count, label_ids

Use cases

  • Agencies: Push enriched LinkedIn contacts into Pipedrive persons with org associations in bulk after a scraping or enrichment run.
  • Founder-led teams: Log every new warm intro immediately into Pipedrive without leaving your enrichment workflow.
  • GTM engineers: Capture open_deals_count and closed_deals_count in output columns to flag accounts already in motion.

Create Organization (Pipedrive)

Credits: 0Inputs: Name (required), Owner ID, Visible To, Address fields.

Outputs: org_id, name, add_time, address fields, annual_revenue, employee_count, industry, linkedin_url, website


Create Deal (Pipedrive)

Credits: 0Inputs

Field Required Notes
Title Yes
Value No Numeric
Currency No Default: USD
Expected Close Date No YYYY-MM-DD
Person ID No Links to existing person
Organization ID No Links to existing org
Pipeline ID No
Stage ID No
Status No open, won, lost. Default: open
Visible To No 1=Owner, 2=Followers, 3=All
Outputs

deal_id, deal_title, deal_value, deal_currency, deal_status, expected_close_date, person_id, person_name, person_email, person_phone, pipeline_id, stage_id, pipeline_name, stage_name, owner_id, owner_name, owner_email, cc_email, formatted_value, weighted_value, add_time, update_time, success

Use cases

  • RevOps: Auto-create open deals linked to person and org records immediately after a contact meets qualification criteria in your enrichment table.
  • GTM engineers: Pass person_id from a prior Create Person step into this action to link deal and contact in a single workflow run.

Update Person, Update Organization, Update Deal (Pipedrive)

Each Update action mirrors its Create action. The record ID field becomes required. All other fields are optional.

Action Required Input Key Outputs
Update Person (Pipedrive) Person ID id, name, emails, phones, update_time
Update Organization (Pipedrive) Organization ID org_id, name, address fields, update_time
Update Deal (Pipedrive) Deal ID deal_id, deal_status, deal_value, update_time

Delete and Merge Records (Pipedrive)

Credits: 0

Action Required Inputs Output
Delete Person (Pipedrive) Person ID status (success boolean)
Merge Persons (Pipedrive) Person ID, Merge With ID Merged person data
Merge Organizations (Pipedrive) Organization ID, Merge With ID success (boolean)
Merge Deals (Pipedrive) Deal ID, Merge With ID Merged deal data

Zoho CRM

Create Lead (Zoho CRM)

Credits: 0Inputs

Field Required Notes
Company Yes Company name
Last Name Yes
First Name No
Email No Primary email
Secondary Email No
Phone No
Mobile No
Website No
Lead Source No Select: Advertisement, Cold Call, Trade Show, Web Research, Facebook, X (Twitter), etc.
Lead Status No Select: Not Contacted, Attempted to Contact, Contacted, Pre-Qualified, Not Qualified, Junk Lead, Lost Lead
Industry No Select: 18 options including Large Enterprise, MSP, Systems Integrator, Wireless Industry
No. of Employees No Number
Annual Revenue No Number
Rating No Select: Acquired, Active, Market Failed, Project Cancelled, Shut Down
Street, City, State, Zip, Country No Address fields
Description No Free text notes
Outputs

lead_id, status, message, created_time

Use cases

  • Agencies: Import enriched prospect CSVs into Zoho leads with pre-set lead source and status for triage.
  • RevOps: Log inbound form fills as leads with Lead_Status: Pre-Qualified automatically after scoring.
  • GTM engineers: Route leads from specific verticals into campaigns by setting Industry and Lead_Source from enrichment output columns.

Create Contact, Update Lead, Update Contact (Zoho CRM)

Credits: 0

Create Contact (Zoho CRM)

  • Required: Last Name
  • Optional: First Name, Email, Phone, address fields, Job Title
  • Outputs: contact_id, status, created_time, message

Update Lead (Zoho CRM)

  • Required: Record ID
  • Optional: All fields from Create Lead
  • Outputs: status, message, modified_time, record_id

Update Contact (Zoho CRM)

  • Required: Record ID
  • Optional: All fields from Create Contact
  • Outputs: status, message, modified_time, record_id

LeadConnector

Create Contact (LeadConnector)

Integration: LeadConnector (GoHighLevel) | Credits: 0Inputs

Field Required Notes
Location ID Yes Sub-account ID
First Name Yes
Last Name No
Email No
Phone No E.164 format
Contact Type No Select: lead, customer
Company Name No
Address, City, State, Postal Code, Country No
Website No
Timezone No Select from dropdown
Source No Attribution source
Tag No Single tag string
Global DND No Boolean
DND Call/Email/SMS/WhatsApp/GMB/FB Status No Select: active, inactive per channel
Outputs

contact_id, date_added, date_updated, type, location_id, first_name, last_name, email, valid_email, bounce_email, unsubscribe_email, dnd, phone, city, state, country, postal_code, website, source, company_name + DND status per channel

Upsert Contact (LeadConnector)

Credits: 0

Same inputs as Create Contact, plus Create New If Duplicate Allowed (boolean).

The action checks email or phone against the Location's duplicate settings before deciding whether to create or update.

Additional outputs: is_new (boolean: true if a new record was created), succeeded (boolean)

Use cases

  • Agencies: Use Upsert Contact for client sub-accounts where leads flow from multiple sources. Prevents duplicate records without needing to pre-check.
  • GTM engineers: Set is_new as a condition column to trigger follow-up actions only for net-new contacts.
  • RevOps: Set channel-level DND flags at creation time so contacts land with correct communication preferences from day one.

Reply.io

Create Contact (Reply.io)

Integration: Reply.io | Credits: 0.io, this action updates the existing contact.

Inputs

Field Required Notes
Email Yes
First Name Yes
Last Name No
Company No
Job Title No
Phone No
City, State, Country No
Time Zone ID No
LinkedIn Profile URL No
Outputs

id, email, firstName, lastName, company, city, state, country, timeZoneId, title, phone, phoneStatus, linkedInProfile, addingDate, companySize, industry, salesNavigatorUrl, linkedInRecruiterUrl, accountId

Create Contact and Push to Campaign (Reply.io)

Integration: Reply.io | Credits: 0

Creates a contact and immediately enrols them in a sequence. Use this when you want one-step contact creation and campaign activation.

Input Required
Campaign ID Yes: select from dropdown
Email Yes
First Name Yes
Output: status (response code)

Update Contact (Reply.io)

Integration: Reply.io | Credits: 0

Same inputs as Create Contact. Acts as an upsert: if the email is found, the contact is updated; if not, a new contact is created.

Use cases

  • Agencies: Use Create Contact and Push to Campaign to move enriched leads directly into cold email sequences in one row-level action.
  • Founder-led teams: Create Contact updates existing records as new data comes in, so your sequences always use the latest job title and company.
  • GTM engineers: Link the id output from Create Contact into a follow-up Update Contact column to backfill LinkedIn URLs after a separate enrichment run.

Instantly

Create Lead (Instantly)

Credits: 0Inputs

Field Required Notes
Email Yes
Campaign ID No Required if creating within a campaign
List ID No
First Name No
Last Name No
Company Name No
Company Domain No e.g. acme.com
Phone No
Website No
Personalization No Custom note for email personalization
Assigned To (User ID) No
Lead Value No High, Medium, Low
Interest Status Code No 1=Interested, -1=Not Interested
Skip if in Workspace/Campaign/List No Boolean: prevents duplicates
Verify on Import No Boolean
Outputs

id (lead_id), campaign, list_id, email, first_name, last_name, company_name, company_domain, phone, website, personalization, status, enrichment_status, verification_status, email_open_count, email_click_count, email_reply_count, timestamp_created, timestamp_updated

Add Lead To Sequence (Instantly)

Credits: 0

Adds a lead directly to an active campaign sequence. Use this when the lead already exists and you want to enrol them in a new sequence.

Field Required
Campaign ID Yes
Email Yes
First Name, Last Name, Company Name, Phone, Website No
Personalization No
PL Value Lead No
Outputs: email, first_name, last_name, company_name, phone, personalization, campaign_id, id (lead_id)

Use cases

  • Agencies: Set Skip if in Campaign: true on Create Lead to prevent re-enrolling contacts already in sequences for a client campaign.
  • GTM engineers: Pass AI Column output into the Personalization field to give each lead a custom first line without manual writing.
  • Founder-led teams: Use Add Lead To Sequence to move a list of warm contacts from a previous campaign into a new follow-up sequence automatically.

Smartlead

Add Leads to Campaign (Smartlead)

Credits: 0Inputs

Field Required
Campaign ID Yes
Email Yes
First Name, Last Name, Company Name No
Job Title No
Phone Number No
Website No
Location No
LinkedIn Profile No
Outputs

ok (boolean), upload_count, already_added_to_campaign, total_leads, duplicate_count, block_count, invalid_email_count, bounce_count, lead_import_stopped_count, is_lead_limit_exhausted (boolean)

Use cases

  • Agencies: Check invalid_email_count and bounce_count outputs to validate data quality before billing clients for enrichment runs.
  • RevOps: Set a condition rule to stop workflow execution if is_lead_limit_exhausted returns true, preventing wasted rows post-quota.
  • GTM engineers: Route leads from separate enrichment columns (email, company, title, LinkedIn) into Smartlead in a single action at the end of the workflow.

HeyReach

Add Leads to Campaign (HeyReach)

Credits: 0(LinkedIn)

HeyReach sends LinkedIn outreach from connected LinkedIn accounts. You must pass a LinkedIn Account ID: this is the ID of the sending LinkedIn account in HeyReach, not the lead's LinkedIn account.

Inputs

Field Required Notes
Campaign ID Yes Select from dropdown
LinkedIn Account ID Yes The HeyReach sender account ID
First Name, Last Name No
Email Address No
LinkedIn Profile URL No
Location No City or region
Summary No Headline or summary text
Company Name No
Position No Job title
About No Bio text
Outputs: rawResponse: returns "success" or "failed"

Use cases

  • Agencies: Build LinkedIn outreach campaigns from enriched lead lists. Pipe LinkedIn Profile URL from B2B Enrichment into HeyReach without manual import.
  • GTM engineers: Check the rawResponse output with a condition rule to flag any failed adds and re-run them in a separate pass.

Troubleshooting

Contact was not created: no error returned HubSpot, Zoho, and Reply.io deduplicate on email. If the email already exists, the action may silently update instead of create. Check the contact_id in the output: if it matches a known ID, the record was updated.

LeadConnector action fails with "Location not found" The Location ID is the sub-account ID, not the agency-level account ID. Copy it from the sub-account URL in your LeadConnector dashboard.

**HeyReach output shows failed for all row


Push Contacts, Leads, and Deals to Your CRM (Part 2)

Continued from Part 1.


s** The LinkedIn Account ID field requires the sender account ID from HeyReach, not a LinkedIn URL or contact ID. Go to HeyReach > Accounts to find the correct ID for the sending account.

Instantly leads not appearing in campaign If Skip if in Campaign is set to true and the lead was already added, no record is created and no error is returned. Check the existing campaign lead list first or set Skip if in Campaign to false to force re-addition.

Smartlead is_lead_limit_exhausted returns true Your Smartlead plan has reached its active lead limit. Either upgrade your plan or archive completed leads from finished campaigns to free up quota.

Zoho CRM returns a 401 error Zoho uses OAuth tokens that expire. Reconnect the Zoho integration under Settings > Integrations to refresh the access token.