Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

Role playbook

How to Sell to a CHRO (and Count the List by Region)

What a CHRO buys, who else is in the room, how many are mailable by region, and four first lines you can send today.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

TL;DR

  • A CHRO owns people strategy, hiring plans, retention and the HR budget. Sell them one problem in those four, not a data product.
  • Count first, send second. On 2026-10-21 LeadOcean showed 13,605 mailable people titled CHRO or Chief Human Resources Officer worldwide, 8,896 of them in North America.
  • The recipe takes about 25 minutes and spends about 26 LeadOcean records. Every count is free.

Prerequisites

  • A free LeadOcean account and an API key from app.leadocean.io. Free gives you 1,000 records for life, no card, 5 requests a second.
  • The key in your shell as $LEADOCEAN_API_KEY.
  • curl and jq.
  • Optional: Claude or any MCP client connected to https://api.leadocean.io/mcp, which has 13 tools including free counts.

What a CHRO actually cares about

A CHRO is judged on whether the company can hire, keep and pay the people its plan needs. Everything they read passes that filter.

They care about four things, in this order.

  1. Hiring against plan. The CEO and board set headcount. A gap in critical roles is the CHRO's problem first.
  2. Retention and regretted attrition. Losing a top performer costs months. They want early warning, not exit-interview trends.
  3. Cost of the people function. Cost per hire, tooling spend, vendor count. They will cut a tool that overlaps another.
  4. Risk and trust. Employee data is sensitive. A vendor that touches it gets read by legal and IT before the CHRO says yes.

They do not read feature lists. They read a sentence that connects to one of these four.

What kills the deal

CHROs say no for predictable reasons. Answer them in the first email, not the third.

  • "We already have an HRIS." Do not argue. Ask what the team does when a critical role has been open 60 days.
  • "Too many vendors." Show what you replace, not what you add.
  • "Send it to the HR tech team." Good. Send them one paragraph with the problem, the scope and who else has to approve.
  • "Not this planning cycle." Ask which month the next one opens. HR budgets follow a cycle, so a named month is a real answer.

Where a CHRO sits in the buying committee

A CHRO is usually the economic buyer or the sponsor for anything that touches employees, and rarely the person who tests it. The people around them:

  • The CEO and CFO approve spend that changes headcount cost or company-wide process.
  • VPs of People, HR directors and talent leaders run the work and tell the CHRO whether it holds up. Recruiting leads sit here too. See how to sell to a recruiter.
  • HR operations and HRIS owners vet integrations, data quality and cost.
  • IT and security review anything that handles employee data. See how to sell to a VP of Engineering.
  • Marketing joins when the buy touches employer brand. See how to sell to a VP of Marketing.

Write to the CHRO as the person who needs one sentence to forward to the CFO. Give them the sentence.

Step 1: Count CHROs by region (free)

Start with a count. It spends zero records and tells you whether the segment is worth a campaign.

leadocean_count_leads counts mailable people by default: verified, catch_all_valid and catch_all addresses. Run it from any MCP client. This filters on the title phrases, so it also catches people whose title contains them.

json
{
  "tool": "leadocean_count_leads",
  "arguments": {
    "title": ["CHRO", "Chief Human Resources Officer"],
    "salesRegion": ["NORAM"],
    "facets": false
  }
}

Repeat with EMEA, APAC and LATAM, or leave out salesRegion for the worldwide figure. Enum values are exact strings, so check them with leadocean_list_enum_values if a count comes back empty.

Step 2: Read the count for each region

Put the counts in one table before you pick a market. These ran on 2026-10-21 with title: ["CHRO", "Chief Human Resources Officer"] and the default mailable email statuses.

RegionMailableEmployers coveredAll matches (any email status)
Worldwide13,6059,69934,347
NORAM8,8966,30118,969
EMEA1,8111,5055,582
APAC1,3421,1444,042
LATAM263228875

Read three things from this. North America is 65% of the worldwide mailable list (8,896 of 13,605). EMEA and APAC are each a small, separate market, between 1,300 and 1,800 people. And the last column shows how much you would be mailing blind: worldwide, 34,347 match but only 13,605 are mailable.

The four regions add up to 12,312, not 13,605. The remaining 1,293 mailable people have no region on file, so they appear only in the worldwide row.

The employer column counts one company once, so it shows how many separate buying committees you can reach, not how many CHROs. In EMEA the ratio is about 1.2 CHROs per employer, so you rarely hit two at the same company.

Step 3: Pull a sample from your best region

Pull 25 rows from the region you picked. This spends 25 records. Search is a flat JSON body, filters are arrays, and limit runs from 1 to 100.

bash
curl -s -X POST https://api.leadocean.io/v1/people/search \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": ["CHRO", "Chief Human Resources Officer"],
    "salesRegion": ["EMEA"],
    "emailStatus": ["verified"],
    "limit": 25
  }' | jq '.data[] | {name: .profile_data.profile_full_name, person_id: .meta.source_ids.person_id}'

Add employeeRange next if you sell to one segment, for example ["1001-5000"]. Page with the cursor value from meta. One search pages to 10,000 rows, so narrow the filters instead of walking the whole index.

Step 4: Enrich one record to read the career history

Before you write, read one profile. Person enrich returns career history: past roles, education, certifications and awards. Past employers carry no company_id yet.

Enrich takes exactly one of linkedin_url, email, phone or person_id. Use the person_id a step 3 row carries at meta.source_ids.person_id.

bash
curl -s -X POST https://api.leadocean.io/v1/people/enrich \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"person_id": "PERSON_ID_FROM_STEP_3", "reveal_email": true}' \
  | jq '.data.resume_data.experiences[0:3]'

This costs one record. A person we hold nothing for returns a 404 and costs nothing.

Look for the path. A CHRO who rose through talent acquisition will respond to hiring pain. One who came from finance or operations will respond to cost and headcount planning. One who started in the last six months is building a plan and is open to new tools.

Step 5: Write the first line

The first line must show you know the job. Pick one of these four angles and keep the email under 90 words.

text
1. Hiring: "How many critical roles at {Acme} have been open past 60 days? I can show where the candidates are."
2. Retention: "When do you first see a regretted exit coming? What do you watch today?"
3. Cost: "Which two HR tools overlap at {Acme}? I can show where one replaces the other."
4. Territory: "I counted {N} mailable CHROs in your region on {date}. Want the list?"

The territory line works because it is checkable. You ran a free count, so the number is real. Send it with the count and the date.

Match the angle to the region. A North American CHRO often runs a large, distributed workforce, so lead with hiring and retention. A European CHRO often works with works councils and local rules, so lead with cost and risk. An APAC CHRO often hires fast across several countries, so lead with hiring.

These are starting points from how the segments are shaped, not measured results. Do not claim a reply rate you have not measured. Test two angles on 100 contacts each and keep the winner.

Step 6: Save the list as a CSV

When the sample converts, export the list. Bulk CSV export is not on the Free plan. Solo ($97 a month) includes it, and Agency ($497 a month) exports 50k rows a file. The ceiling is 50,000 rows a request and 500,000 rows a day.

bash
curl -s -X POST https://api.leadocean.io/v1/exports \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "chro-list",
    "filters": {
      "title": ["CHRO", "Chief Human Resources Officer"],
      "salesRegion": ["EMEA"],
      "emailStatus": ["verified"]
    },
    "limit": 5000
  }'

Search filters go inside filters, and limit sets the row count. Poll GET /v1/exports/{id} until the file is ready.

You can build the same export in the app at app.leadocean.io. The Exports page has a filter builder, a column picker and a price preview before you download.

What you get

The count in step 1, run on 2026-10-21 with title: ["CHRO", "Chief Human Resources Officer"] and salesRegion: ["EMEA"], returned:

json
{
  "total": 1811,
  "totalIsExact": true,
  "totalAll": 5582,
  "distinctCompanies": 1505,
  "credits": 0
}

total is the mailable count. totalAll is everyone matching without the email filter. The call cost no records.

A search row follows the response shape from the API reference, shown here with placeholder values. Rows carry no addresses; enrich by person_id for those.

json
{
  "success": true,
  "data": [
    {
      "profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "Chief Human Resources Officer at Acme" },
      "contact_data": {
        "has_email": true,
        "email_status": "verified",
        "email_type": "work",
        "contact_current_experiences": [
          { "job_title": "Chief Human Resources Officer", "company_name": "Acme", "company_domain": "acme.com" }
        ]
      },
      "meta": { "source_ids": { "person_id": "1234567890", "person_group_id": "1234567890" } }
    }
  ],
  "meta": { "count": 1, "nextCursor": "..." }
}

Troubleshooting

ErrorCauseFix
401Missing or wrong x-api-key headerCheck $LEADOCEAN_API_KEY is set in this shell and sent as x-api-key.
429Above the plan's rate limit (5 a second on Free, 200 on Agency)Honor Retry-After, or pace the loop.
402Out of recordsThe Free plan's 1,000 records are one-off. Move to Solo ($97 a month) or Agency ($497 a month).
Empty dataA filter value does not match an exact enum stringCheck values with leadocean_list_enum_values. salesRegion takes NORAM, EMEA, APAC or LATAM.
Export refusedOver 50,000 rows a request or 500,000 a daySplit the export by region or company size.
Export refused on FreeBulk CSV export is not on FreeUse search with limit up to 100, or move to Solo.

FAQ

Is a CHRO the same as a VP of People?

No. A CHRO is the top HR executive and usually reports to the CEO. A VP of People often reports to the CHRO, or is the top HR role at a smaller company. Sell to the CHRO for budget and give them a line to forward.

Does the count include only people titled "CHRO"?

It counts people whose title matches "CHRO" or "Chief Human Resources Officer". "Chief People Officer" and "Chief Talent Officer" are not in it. Add those phrases to the title array and compare the totals.

How many CHROs can I actually email?

On 2026-10-21 the mailable count worldwide was 13,605 for those two title phrases. The default count includes verified, catch_all_valid and catch_all addresses. Bounces are not refunded, so read email_status before you send.

How is this different from selling to a recruiter?

The method is the same: size, sample, read one profile, write one angle. The CHRO owns budget and strategy, the recruiter owns the daily workflow. See how to sell to a recruiter.

What does this cost?

The counts are free. The recipe spends about 26 records, well inside the 1,000 on the Free plan. See pricing for Solo and Agency.

More role playbooks are in the blog.

Count your CHRO list before you write a word

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →