# The Disputed-Introduction Evidence Pack: Pay, Contest, or Split

*Rebuild one disputed hire's introduction on a single UTC timeline, test each claim against the contract, and write a pay, contest, or split position in a day.*

- Canonical URL: https://www.refolk.ai/guides/disputed-candidate-introduction-evidence-pack
- Pillar: Process, data, and compliance
- Format: Teardown
- Published: 2026-10-17
- Last reviewed: 2026-10-17
- Reading time: 21 min
- Keywords: candidate ownership dispute two agencies same candidate, agency submitted candidate already in our ATS fee, how to prove first introduction of a candidate, recruitment agency fee dispute effective cause evidence, ATS audit log candidate sourced date, duplicate candidate submission who gets the fee

## Key takeaways

- In Greenhouse, a manual merge keeps the primary record's Source and Recruiter values and cannot be un-merged, so the earlier record's attribution survives only in the Activity Feed merge entry.
- Exact email matching catches only 40% to 60% of true duplicates by one vendor's estimate, so search a disputed candidate by phone number and LinkedIn URL as well as email.
- A sourced ATS record with no sent message proves knowledge, not introduction, and effective-cause reasoning cuts against an internal sourcer who never made contact just as it cuts against an agency.
- A notice clause, such as one published term requiring written notice within 3 working days, can make the agency fee payable whatever the internal team already knew, so read it before arguing causation.
- Published agency protection windows run from 6 to 12 months, and the trigger can be a later offer withdrawal or rejection, not only the first submission.
- Only compare event times after converting ATS ISO or epoch timestamps and raw email Date headers to UTC, because display times in different zones can reverse the order of two events.

When an agency invoices for a hire that your own sourcer says she found first, and a second agency writes in to say it submitted the same person months ago, someone has to work out from your own systems who actually introduced the candidate before finance pays anyone. This guide is for the recruiting operations or revenue operations person who will answer for how that evidence was gathered. It carries one disputed hire from the first invoice to a written pay, contest, or split position, wrong turns included, so you can run the same seven steps on your own case inside a working day.

## What counts as an introduction in a fee dispute?

An introduction is whatever the contract with that agency says it is, tested against what each party actually did with the candidate and when. Holding a candidate's details is knowledge. An introduction is an act, and a fee claim rests on the act.

Every disputed hire is decided on two layers, and you need evidence for both:

- **The contract layer.** Four terms do most of the work. The *definition of introduction* says what counts. The *acceptance trigger* is the event that makes an introduction binding, such as your request for an interview. The *protection window* is the period after the trigger during which a hire earns the agency a fee. The *notice duty* is what you must tell the agency, and how fast, if you already hold the candidate.
- **The causation layer.** In English law an agency has to be "the 'effective cause' of the engagement, not simply 'a cause'." In Wallace Hinds v Lastolite, an agency could not claim a fee simply for submitting a CV when it did not play a substantial role.

Hold the case law loosely. Law Staff v Just Costs is widely cited next to Wallace Hinds, but I have not established its deciding facts from the judgment, and one commentator notes that the circumstances and the terms in the two cases were quite different. Pull both judgments before you quote either. In the UK, agency fees are also regulated, to a certain extent, by the Conduct of Employment Agencies and Employment Businesses Regulations 2003. Outside the UK, ask counsel which doctrine applies. I would not assume effective cause travels.

The sources disagree on where to start. Law-firm explainers start from the contract. Right-to-represent and vendor-management sources start from the timestamp. I build the timeline first, because a contract can only be read against facts you actually have. But I read the notice clause before anyone argues causation, and the case below shows why.

## The disputed hire in this teardown

The case is a composite built to show the mechanics. The systems behave as their documentation describes, but the day numbers and clock times are illustrative and do not come from a real dispute. Day 0 is the earliest event found.

The client runs Greenhouse as its applicant tracking system (ATS), plus a shared hiring-manager inbox and a separate outreach tool for its sourcers. A software engineer accepted an offer on Day 290. Three parties then claimed the introduction:

1. **Agency A** sent the invoice. It submitted the candidate through the Greenhouse agency portal on Day 230, and the candidate profile shows Agency A as the source.
2. **The internal sourcer** says she found him first. She points to a Greenhouse prospect record she created on Day 40.
3. **Agency B** wrote in to say it emailed his CV to the hiring manager "months ago" and expects a fee.

Agency A's terms carry a 12-month window and a clause requiring the client to give written notice within 3 working days if it already holds the candidate's details. That is the same shape as one published UK agency's terms. Agency B's terms carry a 6-month window that runs from the day it supplies the CV. Finance wants an answer before the invoice falls due.

## How do you rebuild one disputed introduction?

Freeze the evidence, trace every merge back to its original records, put every event on one UTC timeline, classify each event, then test each claim against its contract and write the position with exhibits. The desk's estimate is about an hour per step. That figure is unverified, and seven steps only fit in a working day if the exports can be reached on the day.

#### From invoice to written position

1. **Freeze and collect the record trail** - Export the activity feed, application history, merge entries, outreach logs, agency emails with raw headers, RTRs, and contracts into one hashed folder, noting each file's source system.
2. **Resolve every merge back to its original record** - Use the Activity Feed merge entries to list each merged-away or aliased ID, its creator, its source, and the fields the merge overwrote.
3. **Normalise every timestamp to one UTC timeline** - Convert ATS ISO and epoch timestamps and raw email Date headers to UTC, recording the offset applied to each source.
4. **Classify each event on the introduction ladder** - Label each event as identified, contacted, replied, consent, submitted, client acted, or engaged, with the sourcer in the room.
5. **Read the contract's introduction terms** - Quote each claimant's introduction definition, acceptance trigger, protection window, and notice duty with clause numbers, alongside legal.
6. **Test each claim against window, notice, and cause** - Build a matrix of claimants against criteria, with every cell pointing to an exhibit.
7. **Write the position with numbered exhibits** - Write pay, contest, or split for each claimant, tying every reason to a numbered exhibit.

Run the steps in order. Steps 1 to 3 produce facts. Steps 4 to 6 produce judgments. If you start judging before the facts are fixed, you will defend a conclusion and then go looking for exhibits to support it.

## Steps 1 to 3 on the case: collect, unmerge, convert to UTC

Most wrong turns in a disputed introduction happen in the first three hours, because the ATS fields you look at first are the ones a merge has already overwritten. Trust the activity log and the raw message headers over any summary field.

### Step 1: freeze before anyone tidies the record

Greenhouse merged profiles cannot be un-merged, and the activity feed is not available through standard report exports. If a well-meaning coordinator "cleans up" the profile during the dispute, the evidence you need can be overwritten for good. In the case, I captured the surviving candidate's activity feed from the profile, the application history, the sourcer's outreach log, both contracts, and every email that mentioned the candidate, saved with full raw headers. I hashed each file and logged its source system.

> **Rule:** Nobody edits the disputed record
>
> From the moment an invoice is disputed, no one merges, re-sources, or edits the candidate profile until the position is written. Every change after the freeze is a change to the evidence.

### Wrong turn 1: trusting the Source field

The profile said Source: Agency A. My first draft note to the sourcer said she had no record. Then the Activity Feed showed a merge entry on Day 236: a coordinator had merged the sourcer's Day 40 prospect into Agency A's record, with Agency A's record as the primary. Where the two profiles conflict, Greenhouse uses the primary profile's values for Source, Recruiter, Coordinator, and Referral, and lists the conflicts it resolved in the merged candidate's Activity Feed. The earlier record was real. The merge had hidden it.

Why were there two records in the first place? Greenhouse auto-merge only joins candidates and prospects with identical email addresses, and candidates sourced from specific agencies will not auto-merge at all. The sourcer had his work email. Agency A submitted his personal one. The Duplicate tag, which matches on email address, phone number, or LinkedIn profile URL, fired on the LinkedIn URL, and the coordinator merged by hand six days later. This is the general pattern: because agency records are kept out of auto-merge, a duplicate pair usually means an agency submission collided with a record you already held. The later manual merge is where the earlier attribution gets overwritten.

How a merge changes the evidence depends on the system. Here is what is documented, and what is not.

| System | Source / owner field | Created date | Old ID |
|---|---|---|---|
| Greenhouse | Primary wins; conflicts logged in feed | Not established publicly | Aliased; 404 via API; merge irreversible |
| HubSpot | Primary wins | Oldest kept | New ID; old IDs searchable |
| Lever | `origin` enum; `sourcedBy` null if not sourced | Epoch ms | Not established publicly |

Two notes for other systems. In Lever, `origin` takes the values agency, applied, internal, referred, sourced, or university, and `sourcedBy` is null for opportunities that were not sourced. So a sourcer's claim with a null `sourcedBy` needs other evidence behind it. Lever's documented `user:merged` audit event covers user accounts, not candidates. Do not expect it to show a candidate merge. Whether Workday or Ashby keep a full per-event actor log for "sourced" is not established publicly, so check your own tenant before you rely on it.

### Wrong turn 2: the agency that was not in the ATS

I searched the ATS for Agency B and found nothing, and nearly wrote Agency B off as a speculative claim. Then I searched the hiring-manager inbox by the candidate's personal email, phone number, and surname, and found Agency B's Day 0 email with the CV attached and no reply. Agencies often submit outside the ATS. An ATS-only search misses them.

### Step 3 and wrong turn 3: the RTR that looked late

A right-to-represent (RTR) is the candidate's dated consent for one agency to put them forward for one specific role. It should record the candidate, the job and requisition, the agency and recruiter, the rate, a time limit, and a signature, reply, or electronic acknowledgment with its date and time. The required order is RTR first, then submission.

In the ATS interface, Agency A's submission showed as Day 230, 08:05. In my inbox, the candidate's RTR acknowledgment to Agency A showed as Day 230, 15:30. Read side by side, consent seemed to arrive seven hours after submission, and I flagged it. Converted, the picture flipped. The Greenhouse API gave the submission as 16:05Z, because Greenhouse API timestamps carry the UTC "Z" suffix. The raw `Date:` header on the RTR email read 15:30 +0000. Consent came 35 minutes before submission. Which time zone each ATS uses in its interface is not established publicly, so I never compare display times. Lever timestamps arrive as epoch milliseconds, which are UTC by definition.

#### Evidence layers, most to least reliable

1. **Raw message records** - Email Date headers, outbound send IDs, reply records
2. **Activity log** - Merge entries, stage changes, client requests, with actor and UTC time
3. **API timestamps** - ISO values with a Z suffix, or epoch milliseconds
4. **Summary fields** - Source, Recruiter, Created date, all overwritten or reset by merges

*When two records disagree, the deeper layer wins, and a summary field never outranks a raw header or an activity-log entry.*

Build the timeline in a flat file, one event per row. The offset column is the one people skip, and it is the one counsel will ask about.

**UTC timeline, one event per row**

```
utc_time,source_system,raw_value,offset_applied,record_id,actor,event_class,exhibit
Day000T09:12Z,hiring-manager inbox,Date header +0100,-01:00,none,Agency B,submitted,E07
Day040T14:30Z,Greenhouse API,ISO with Z,none,sourcer prospect (aliased),sourcer,identified,E03
Day230T15:30Z,ops inbox,Date header +0000,none,none,candidate to Agency A,consent,E09
Day230T16:05Z,Greenhouse API,ISO with Z,none,primary candidate,Agency A,submitted,E02
Day233T10:20Z,Greenhouse activity feed,ISO with Z,none,primary candidate,hiring manager,client acted,E04
Day236T11:02Z,Greenhouse activity feed,merge entry,none,primary + aliased,coordinator,merge (not a claim event),E05
Day290T17:45Z,Greenhouse API,ISO with Z,none,primary candidate,candidate,engaged,E06
```

*Replace the Day labels with real ISO 8601 UTC times; keep the offset you applied so anyone can re-derive the row.*

## Steps 4 to 6 on the case: classify, read the contract, test

Put each event on a single rung of a ladder that runs from identified to engaged, then read each claim's contract terms against the highest rung that claimant reached inside its window. In this case, classification ended one claim and the contract ended another before anyone argued causation.

#### The introduction ladder

1. **Identified** - A record exists; proves knowledge only
2. **Contacted or replied** - An outbound message ID, and ideally a reply
3. **Consent** - A dated RTR naming this agency and this role
4. **Submitted** - The CV reaches the client, by portal or email header
5. **Client acted** - The client requests details or an interview
6. **Engaged** - The offer is accepted; the fee event

*Each rung proves more than the one before it, and a claim is only as strong as the highest rung it reached inside its window.*

### Wrong turn 4: treating Day 40 as the first introduction

Once the merged record turned up, I swung too far the other way and drafted a note contesting Agency A on the grounds that the client had held the candidate 190 days earlier. The outreach log stopped that. The sourcer had added him to a sequence that was paused, and the log held zero sent message IDs and no reply. Her record sat on the identified rung.

No published guidance deals directly with a record that was sourced but never contacted, and no published threshold says whether a sent message, a reply, or a logged call is enough. The effective-cause reasoning that sinks an agency which never spoke to the candidate, never obtained consent, and never meaningfully engaged cuts the same way against an internal sourcer who never made contact. Then there was the contract. Agency A's terms required written notice within 3 working days if the client already held the candidate's details, and failing that, the client agrees to pay. Nobody sent that notice. Under that clause, the client's internal knowledge did not matter.

> **Rule:** Read the notice clause before arguing causation
>
> If the agency's terms require notice that you already hold the candidate and you never gave it, your earlier record usually stops being a defence. Check this clause before anyone drafts an effective-cause argument.

### Step 5: what the published terms look like

Published agency terms disagree on when an introduction counts. Some treat it as made when the agency supplies the CV. Others deem it accepted only on the client's request for details or an interview. The terms below are published by the agencies themselves. They show the spread, not a standard. I could not retrieve trade-association model terms publicly, so their wording is not established here.

| Terms | Window | Fee | Trigger / notice |
|---|---|---|---|
| Quad Recruitment | 12 months | 30% | From introduction, offer withdrawal, or rejection |
| Jade Recruitment | 6 months | 16% | Same triggers |
| H-Seventeen | 12 months | Schedule | Client notice within 3 working days |
| Allen Recruitment | 12 months | Min €2,500 | Accepted on request for details or interview |
| Legal Specialists (US) | 1 year | Not stated | Fee survives a resume already in client files |

For each claimant, quote four things with clause numbers: the introduction definition, the acceptance trigger, the window and what starts it, and the notice duty.

### Step 6: the claim test on the case

This is the matrix for the case, with each cell pointing to an exhibit.

| Claimant | Highest rung in window | Window and notice | Drove the process? |
|---|---|---|---|
| Agency A | Engaged (E06) | Inside 12 months; client gave no notice | Yes: RTR, submission, interview (E09, E02, E04) |
| Agency B | None; window lapsed | 6 months from Day 0, lapsed before Day 230 | No: no reply, no client action (E07) |
| Internal sourcer | Identified (E03) | Not a contract party | No: zero sent messages (E08) |

On Agency B, I counted the window from the right trigger before closing it. Some terms restart the clock on a later offer withdrawal or rejection, so I searched the timeline for either. There was neither, and no interview was ever requested through B. The window ran out roughly two months before Agency A even submitted.

The legal reading of a lapsed or never-accepted introduction depends on the exact wording, so this is the point to bring in a lawyer who has dealt with these disputes. Finding one by practice area alone is slow. I would ask [Refolk](/) for the narrower group who have actually published on the doctrine.

I ran this search: `UK employment lawyers who have written about effective cause and agency introduction fees` - [see the full result list](https://www.refolk.ai/s/bx85j9knrq).

*Returns UK practitioners whose public writing covers effective cause and introduction-fee disputes, with profiles you can check before engaging anyone.*

## Writing the pay, contest, or split position

Each claimant gets one written position: pay, contest, or split, and every reason in it points to a numbered exhibit. Decide it on two questions: did the claim meet its own contract terms, and did the claimant drive the hire?

#### Position by contract and conduct

Horizontal axis runs from Contract terms not met to Contract terms met. Vertical axis runs from Did not drive the hire to Drove the hire.

| Quadrant | What it means |
| --- | --- |
| Drove the hire, terms not met | Contest or negotiate a split; take legal advice first |
| Drove the hire, terms met | Pay; this is Agency A |
| Passive, terms not met | Contest in writing with exhibits; this is Agency B |
| Passive, terms met | Contract-dependent; check notice and causation wording with counsel |

*A claim that meets its terms and drove the hire gets paid, and the hard calls sit where the contract and the conduct disagree.*

The positions in the case:

- **Agency A: pay.** The claim sits inside its window, consent preceded submission once times were converted, the client acted through Agency A, and the client never gave the 3-working-day notice.
- **Agency B: contest.** The window lapsed, the client never took any step that would accept the introduction, and Wallace Hinds holds that submitting a CV without playing a substantial role did not earn a fee.
- **Internal sourcer: no claim, one process finding.** Her record was knowledge. The finding is that nobody in the client team sent the notice.

A split is rarely something a contract provides for. It is a commercial settlement, and it fits the top-left quadrant, where an agency clearly drove the hire but missed a contractual step. If you offer one, say in writing that it is made without accepting liability, and have legal approve the wording.

**Disputed introduction position memo**

```
Candidate: [name]   Requisition: [ID]   Offer accepted: [UTC timestamp]
Claimant: [agency name or internal team]
Claim as stated: [quote their email or invoice] (Exhibit [n])

Contract: [terms title, version, clause numbers]
  Introduction defined as: "[quote]"
  Acceptance trigger: "[quote]"
  Protection window: [length] from [trigger]; runs to [UTC date]
  Notice duty: "[quote]"   Given: [yes/no, UTC timestamp] (Exhibit [n])

Highest rung reached inside window: [identified / contacted / replied / consent / submitted / client acted / engaged] (Exhibit [n])
RTR: [UTC] vs submission [UTC]; order: [before / after] (Exhibits [n], [n])
Merges touching this record: [primary ID, aliased IDs, merge UTC, fields overwritten] (Exhibit [n])

Position: PAY / CONTEST / SPLIT
Reason, one sentence: [the deciding fact and the clause it meets or fails]
Open questions for legal: [list]
Prepared by: [name]   Date (UTC): [date]   Folder index: Exhibit 0
```

*Write one memo per claimant; exhibit numbers must match the hashed folder index in Exhibit 0.*

## How this goes wrong: failure modes and false positives

Disputed introductions are usually lost on evidence handling, not on law. A field gets read instead of a log, a display time instead of a header, or a window gets counted from the wrong trigger. Each failure below names what it looks like and the check that catches it.

1. **A merge hid the earliest record.** *Looks like:* Source reads "Agency" and there is no sign of an internal record. *Check:* the Activity Feed merge entry and the aliased IDs, before you trust the field.
2. **Merge-time timestamps.** *Looks like:* a CRM "source date" that falls on the same day as the merge. In HubSpot, merged property timestamps show when the merge happened, not the original date, even though the oldest create date is kept. *Check:* the raw outreach send logs.
3. **Time-zone drift.** *Looks like:* two events that seem a day apart, or in a clear order. *Check:* convert the raw email `Date:` header and the API timestamp to UTC. Events a day apart on screen can be hours apart, or in the opposite order.
4. **Identified mistaken for introduced.** *Looks like:* "I found him first" backed only by a record's creation date. *Check:* look for an outbound message ID and any reply. With neither, it is knowledge.
5. **A missed notice clause.** *Looks like:* a strong causation argument against an agency whose terms required notice you never gave. *Check:* read the notice clause before arguing causation.
6. **RTR dated after submission.** *Looks like:* consent that arrives after the CV, which also happens when display times are compared. *Check:* compare the RTR timestamp with the submission email header, both in UTC.
7. **Exact-email dedupe.** *Looks like:* no Duplicate tag, because one record holds a personal email and the other a work email. *Check:* search by phone number and LinkedIn URL as well.
8. **A lapsed window counted from the wrong trigger.** *Looks like:* a claim closed because the first submission is old. *Check:* look for a later offer withdrawal or rejection that some terms treat as a fresh trigger.

> **Watch out:** Your duplicate rate is higher than you think
>
> Exact email matching catches 40% to 60% of true duplicates by one vendor's estimate, so the earliest record is the one most likely to sit unlinked. A clean-looking profile is not proof that no other record exists.

Nobody can tell you how many duplicates your own database holds. One vendor says a manager who assumes 5% usually finds 15% to 20% once a proper audit runs. An ATS vendor's blog estimates 10 to 15% of records. A third vendor says there is no reliable universal percentage, and I agree with that one. In one vendor case study, 22% of 8,400 candidate records were duplicates. Collisions are also common by design: one agency benchmark reports that 71% of placements come from candidates already in the agency's CRM. Agencies resubmit people they already know, and so will the agencies you use.

> The field tells you who won the merge. The log tells you who got there first.

## Who owns the evidence pack, and how do you keep the next one cheaper?

Recruiting operations owns the pack: it holds the ATS, the merge history, and the export rights, and legal reads the result. That bench is small, and outside the US it is very small. So the process has to live in a document, not in one person's memory.

| Market | Total | Leading title (share) | Example employers |
|---|---|---|---|
| United States | 147 | Recruiting Operations, 16/25 sampled (64%) | Plaid, Susquehanna, Hudson River Trading |
| United Kingdom | 18 | Recruitment Operations, 12/18 (67%) | Anthropic, Jane Street, British Airways |
| US, Greenhouse skill tag | 5 | Recruiting Operations, 5/5 | Thinking Machines Lab, Candid Health, Crusoe |

In Refolk's index of professional profiles, the US has about 8.2 times as many recruiting operations people as the UK, and the two markets use different titles. "Recruitment Operations" is the UK title. "Recruiting Operations" is the US one. Search with the wrong market's spelling and you undercount the people who answer for this evidence.

**3.4% - US recruiting-ops profiles that list Greenhouse by name**

In Refolk's index, 5 of 147 US recruiting operations profiles name the ATS, so the people who know a firm's merge history rarely show up in a search for the tool.

That matters when you need a peer who has dealt with a specific ATS's merge behaviour, or an interim ops lead for a dispute backlog. Matching on the tool name finds almost nobody. Describing the person in plain English to Refolk, by role, market, and the systems they run, gets round the fact that so few profiles list the tool.

The cheapest dispute is the one your process prevents. Three changes would have removed this case:

- **Send the notice.** When an agency submits someone you already hold, send the written notice inside the contract's window, whether that is 3 working days or something else. Track it as a task on the candidate record.
- **Record the introducer at submission.** A Norton Rose Fulbright note on introducer fees advises clients to document when introductions are made, including the relevant introducer. Write that into the profile before any merge can overwrite it.
- **Search wide before merging.** Search by phone number and LinkedIn URL as well as email, and add a note on the surviving profile naming the original source and creator of every record merged into it.

#### Before the position goes to finance

- [ ] Every exhibit is in one folder, hashed, with its source system noted in Exhibit 0.
- [ ] Every merged or aliased ID is listed with its original creator, source, and the fields the merge overwrote.
- [ ] Every timeline row has a UTC time and a recorded offset, and none comes from a display time.
- [ ] Every claimant's highest rung on the introduction ladder is backed by a specific exhibit.
- [ ] Each contract's introduction definition, trigger, window, and notice duty is quoted with clause numbers.
- [ ] Each window was counted from the correct trigger, including any later offer withdrawal or rejection.
- [ ] The RTR and the submission were compared in UTC, and their order is stated.
- [ ] Any case law cited has been checked against the judgment itself, not a summary.
- [ ] Each claimant has one written position, pay, contest, or split, signed off by legal.

## Frequently asked questions

### Who gets the fee when two agencies submit the same candidate?

Usually the agency whose introduction its own contract recognises and which was the effective cause of the hire, not simply the first to send a CV. Check each agency's acceptance trigger and protection window against a UTC timeline. In Wallace Hinds v Lastolite, an agency could not claim a fee for submitting a CV when it did not play a substantial role. Some public-sector vendor terms go further and disqualify the worker when multiple vendors submit RTRs.

### Do we owe an agency fee if the candidate was already in our ATS?

Often yes, if the agency's terms carry a notice clause and you stayed silent. One published term requires written notice within 3 working days when the client already holds the candidate's details, and otherwise the client agrees to pay. A US legal staffing term makes the fee payable even if the client later finds the resume in its own files. Read the notice clause before arguing causation.

### Does a sourced profile in our ATS prove we found the candidate first?

It proves you knew about the candidate, not that you introduced them. Look for an outbound message ID, a reply, or a logged call tied to the role. Effective-cause reasoning says a party that never spoke to the candidate or got their consent is not the cause, and that logic applies to an internal sourcer as well as an agency. No published threshold says which contact event is enough.

### Can a Greenhouse candidate merge be undone to recover the original source?

No. Greenhouse merged profiles cannot be un-merged, and where the records conflict the primary profile's values for Source, Recruiter, Coordinator, and Referral win. The conflicts resolved during the merge are listed in the merged candidate's Activity Feed, and the secondary ID is aliased. Standard report exports do not include the activity feed, so capture it from the candidate profile before anyone edits the record.

### How long does an agency's claim on a candidate last?

As long as the protection window in that agency's terms, counted from the trigger the terms name. Published UK agency terms range from 6 to 12 calendar months, and some restart the clock on an offer withdrawal or rejection, not only the first introduction. Find the correct trigger date on your UTC timeline before you decide a window has lapsed.

### Why do the ATS and the inbox disagree about when things happened?

They usually record in different time zones. Greenhouse API timestamps carry a UTC Z suffix, Lever uses epoch milliseconds, and a mail client shows local time. Which zone each ATS interface displays is not publicly documented, so never compare display times. Convert the API value and the raw email Date header to UTC, and record the offset you applied.

---

*From the Refolk guide library. I revise these guides rather than replacing them, so the current version is always at https://www.refolk.ai/guides/disputed-candidate-introduction-evidence-pack*
