Use case

Timing outreach with hiring signals

A posting names what a company is about to build and often the tools the role needs. Six hiring signals, where to read each one, the play it supports and how to test the play.

Updated 5 October 20267 min read

A company that opens a role names, on its own job board, what it is about to build and often the tools the role will need. For a seller that is a dated reason to reach out. This guide turns hiring data into six trigger events for outreach: the field that shows each one, the play it supports, and the test that tells you whether the play beats your usual timing.

It is about accounts. A posting gives you a company, a role, a level, the tools it names and a public link, and the person to approach comes from your CRM, where your owners and contacts already live.

What a posting gives a seller

Job Postings holds every role a company publishes, taken from the company's own job board or careers page. Each posting carries labels and the tools named in it, and these are the fields a seller uses. The table gives each with the identifier you type in a query.

FieldWhat it holdsUse in timing
Labels (labels)Job function (26 values), seniority (9 levels), ten role flags and 15 tool families, as JSONThe kind of role, its level and the buying flags
Technologies (technologies)Software named in the posting, with the company's own products left outThe tools the role needs
Dates (first_seen_at, posted_at, closed_at)When Fokals first saw the posting, the date the board gives, and when it closedThe age of the signal
Baseline marker (found_on_first_read)True when the posting was already on the board at the company's first observationKeeps the baseline out of the triggers
Link (url)The public postingThe evidence a rep can open

Labels are produced under a named, frozen version, and a value is set where the labelling is confident. Read an empty value as "not known".

Six signals and a play for each

Each signal is a hypothesis about a buying moment. The play is what a seller does with it, and the last column is how to read it.

SignalWhere to read itThe playHow to read it
A first posting in a functionThe job function label against the company's earlier postingsOpen with the setup problems of a new team and offer a plan for its first quarterA function new to the postings may be old to the company, so check the history
A tool named in a postingThe technologies list, the tool flags and the daily tool mentions in Hiring ActivityIf the tool complements yours, lead with how the two work together. If it competes, treat the account as a displacement targetA tool a role needs points to adoption in progress, and the website confirms it
A role that selects toolsThe selects-tools role flagSend comparison material to the account while the role is openThe role can also exist to renew what is in place, which is a renewal conversation
Work coming in-houseThe replaces-vendor role flagOffer the new in-house team software that replaces what an agency or vendor didThe posting marks the shift, and your discovery call names the vendor
A new countryNew countries in Sales Team Metrics, and the international role flagLead with the country: language, payments, support or complianceA posting plans a market, so pair it with a country-specific change on the website
An enterprise pushThe upmarket and segment fields of Sales Team MetricsOffer what a longer, more formal sale needs, such as contracts, security reviews and enablementOne enterprise posting is one posting, so check that the pattern persists

For a tool that competes with yours, the guide to competitor displacement from technology changes shows how to read the same account from the website side.

Defining "first" exactly

A first posting in a function is the signal that a short history fakes most easily, so the query below tests it three ways. For a role such as a first data engineer, combine the nearest job functions, which are data analytics, data science and ML, and software engineering, with a match on the title.

-- Postgres JSON syntax; adapt it to your warehouse
with by_function as (
  select company_id,
         labels->>'job_function'      as job_function,
         min(first_seen_at)           as first_in_function,
         bool_or(found_on_first_read) as open_at_baseline
  from job_postings
  where labels->>'job_function' is not null
  group by 1, 2
), watched as (
  select company_id, min(first_seen_at) as watched_since
  from job_postings
  group by 1
)
select f.company_id, f.job_function, f.first_in_function
from by_function f
join watched w using (company_id)
where not f.open_at_baseline
  and f.first_in_function >= current_date - 14
  and f.first_in_function - w.watched_since >= interval '30 days';

The query keeps a function when no posting in it was open at the company's first observation, the first posting is under 14 days old and the company's postings have been observed for at least 30 days. Because every posting is dated and the first observation is marked, "first" means first in the record. The 30-day guard keeps out functions that merely had no open role on the day the company was first observed, and you can set it to the length that suits your market.

Tools named, and what the website shows

The technologies list holds the software named in each posting, matched from the technology catalogue. Fifteen tool families, among them tool_salesforce, tool_hubspot, tool_snowflake and tool_aws, are flagged separately in the labels. Fokals gives a tool named in a posting's title twice the weight of one named in the body when it scores intent, and you can borrow the rule: a role titled for the tool is about the tool.

Many tools leave a trace in a posting before they leave one on a public website, so postings and websites are two sources worth combining. A tool named in postings and present in Technology Stack is confirmed from both sides. A tool named in postings and not yet on the site is a lead that hiring gives you first. The tech_mentions field of Hiring Activity (company_hiring_daily) counts open postings per tool per day, and a tool in three open postings that was in none a month ago is a stronger signal than one posting.

From signal to a trigger a rep can use

  1. Pull new postings since your bookmark, as the guide to incremental API sync describes.
  2. Keep the postings that match a trigger rule, and drop found_on_first_read postings from the "new" triggers.
  3. Join to your accounts on the company ID, or on the domain if your CRM stores domains.
  4. Write one row per account, trigger and week, with the posting link as the evidence.
  5. Route the row to the account owner.

A dozen postings for one team are one trigger. The team-build role flag marks hires that are part of a team being grown, so count the postings as context for the rep and send one alert. Keep the age of a trigger visible too. A posting with a close date has been filled or withdrawn, so keep its trigger, mark it closed and work the accounts with open postings first.

When two triggers fire at once

Accounts will show more than one trigger, and they need an order. Fokals scores intent from the same postings, and its weights are a first ordering to start from: a tool named in a title or a leadership hire weighs 2, a tool named in the body weighs 1, and a role that selects tools, an international role, a new initiative or a paid-media role weighs 1.5 each. Use that order for your plays at the start and replace it with the lifts you measure. An account that shows a hiring trigger and a matching change on its website in the same weeks, such as a tool added to the site, has two sources agreeing and goes first.

Testing a play

Treat each play as a hypothesis. For each trigger, compare the share of triggered accounts that open an opportunity within 60 days with the share of comparable accounts that had no trigger: the same segment and size, in the same weeks. Report the lift with the number of accounts behind it, and read a result from a large enough group of accounts. Start with the two triggers nearest your product and add others only when those pay.

The timing question has the same answer. Record the days from the first-seen date to your first touch and to the opportunity, and set the window where most of your wins sit. Because postings are dated and never revised, the test is repeatable: run it again next quarter on a longer record of your own touches.

How to read a posting

A posting records an intention to hire, so read it as direction: it shows where a company plans to spend people. A role can be filled or withdrawn from inside, which the close date shows. Companies publish roles on their own job boards, so a company with a busy board gives a rep many dated reasons to call, and a quiet board is itself a reading. Role flags mark postings that call for the behaviour, so a count of flagged postings is a floor for the real number of such roles.

How Fokals delivers it

The hiring dataset is refreshed daily and holds Job Postings, Hiring Activity and Sales Team Metrics, delivered by REST API or as bulk files. The data dictionary defines every label and flag used above. To combine these triggers with a weekly score, see prioritising accounts with intent scores.

Frequently asked questions

Which job postings signal that a company is about to buy software?

The ones that name a tool, call for someone to select tools, open a function the company has not hired for before, or bring vendor work in-house. In Fokals these are the technologies named in a posting, the tool families, the selects-tools flag, a first posting in a job function and the replaces-vendor flag. Test each one against your own deals before you build a play on it.

How soon after a job posting should sales reach out?

Measure your own window. Record the days from the posting's first-seen date to your first touch and to the opportunity, and set the window where most of your wins sit. Every posting carries its first-seen date and its close date, so the age of a signal is always on the record.

Can job postings show which tools a company uses?

They show which tools a role needs, which points to tools the company uses or is adopting. Fokals lists the software named in each posting from the technology catalogue, flags 15 tool families and counts mentions per company per day in Hiring Activity. Read a mention as dated evidence of a tool in play, and confirm it against the website's technology record.

What does a job posting give a sales team besides a role title?

A posting gives the company, the role labelled by job function and seniority, ten role flags, the tools named, the location and work mode, advertised pay on one annual US-dollar scale and a public link a rep can open. A trigger built on those fields names a role and a company, and the rep brings the contact from the CRM.

How do I find companies that are hiring for a specific role?

Filter Job Postings on the title, on labels such as job function and seniority, and on an empty close date for roles that are still open. For a count by company, use Hiring Activity, which gives the open postings of each day by job function and by seniority. Exclude postings marked as found at the first observation when you want only newly opened roles.

The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.