← Help centre

Placements

Signed in? Ask Lovelio this question inside the app - it answers from this same page.

A placement records a candidate placed with a client. It captures the candidate, the client, the job, the first-year base salary and currency, anything on top of base (super, OTE, bonus), the fee, the start date, the guarantee period, an owner (the consultant who gets the credit) and optional notes. Placements live on the "Placements" tab of the Clients page, which is also where the billings figures come from.

What gets recorded

  • Candidate, client and job. Every placement traces back to a real job and a live application on that job, and the job must be OPEN (Active or On Hold). Logging a placement for a candidate who is not on one of the client's open jobs is refused with a message to add them to the job first, and logging one on a Closed or Filled job is refused with a message to reopen the job. If the candidate is on more than one open job with that client, Lovelio asks which job rather than guessing.
  • First-year salary and currency. The currency is a picker, and it pre-fills - see "What currency a placement is in" below.
  • Fee, either a percent or a fixed amount. A percent is taken of the client's fee basis, set on their terms: base salary, or the total salary package (the agency standard picks one and each client can differ). The package is the larger of OTE and base, plus super, plus bonus; super can be a percent of base or an amount. The billing figure is computed once: the basis figure times percent divided by 100, rounded to whole currency units. A percent fee with no salary produces no fee figure.
  • Fee and guarantee default from the client's terms. When a client is picked, their fee schedule loads (their own terms if an admin has set them, otherwise the agency standard); if an admin has overridden the fee on the specific job, that override wins over the schedule. The percent comes from the band the basis figure falls in on that schedule (base or package, whichever the terms name), the schedule's minimum fee applies, and the guarantee days pre-fill. Everything stays editable, and anything typed in wins over the defaults.
  • Placement type: permanent or contract. It pre-fills from the job (a contract job logs a contract placement) and can be switched on the form.
  • Offer date: when the offer was accepted. Pre-fills from the recorded acceptance, else today. Change it before reviewing the placement if it was accepted earlier. The quota preview uses this same date.
  • Start date and guarantee days. The guarantee window runs from the start date for the given number of days. Guarantees apply to perm placements; a contract placement has no guarantee.
  • Owner. Defaults to the person who logs the placement; a different consultant can be picked. When an API call with no acting user logs one and passes no owner, the earliest admin or team leader gets it. The owner is the workflow owner - who the money counts for is the credit split, below.

Billing details

Every placement, perm or contract, carries what the agency's accounts team needs to bill the client. These are standard fields on every placement, not custom fields, and nothing needs setting up.

  • Hiring manager: the client contact who hired. Pre-fills from the job's contact.
  • Invoice contact: the client contact who gets the invoice, often someone other than the hiring manager (accounts payable, finance). Pre-fills from the client's invoice contact.
  • PO number: the client's purchase order or order reference, up to 200 characters.
  • Invoice notes: anything accounts needs on the invoice, up to 5,000 characters.

Both contacts must be contacts on the placement's own client. Pick "None" to leave one empty. Change any of them later on the placement ("Edit", then "Save changes"); every change shows on the placement's timeline.

The client's invoice contact is the person each new placement for that client pre-fills. It is shown as "Invoices" next to the contact's name on the client's Contacts tab. Set it with "Make invoice contact" in the contact's menu there. When a client has none yet, the first placement that names an invoice contact sets it, so the second placement pre-fills on its own. The agency's own client (internal hiring) never gets one.

Lovelio never approves or sends an invoice. With Xero connected, each perm placement with a fee becomes a draft invoice in Xero, and the placement's Invoice row shows whether it is paid (see the Xero help card). These fields also travel to the agency's accounts system through the API (the placement's billing object, and the client's default_invoice_contact_id) and Ask Lovelio. A JobAdder import brings each placement's company contact, billing contact and order reference across.

Contract placements

A contract placement records the charge rate (what the client pays), the pay rate (what the contractor gets), whether those rates are hourly, daily or weekly, and the contract end date. From those, Lovelio computes the expected gross profit over the initial term: the margin (charge minus pay) times the working days in the term (Monday to Friday; hourly rates assume an 8-hour day, weekly rates divide the days by 5). The figure can be overtyped at any time - an entered figure always wins, and editing the rates or the term recomputes it unless it was set directly.

Contract rates and expected GP cannot be negative. The charge rate must be at least the pay rate, and the contract cannot end before it starts. Lovelio shows the same clear error whether the invalid terms came from a form, Ask Lovelio, Slack, an import or the API.

Expected GP is the contract placement's value everywhere a perm placement's fee appears: the billings cards, the client's fee history, reports. There are no timesheets and no invoicing - expected GP is a booking figure, and getting paid stays in the agency's accounting system.

Everyone on contract right now, and what happens when each contract ends, is on the Contractors page, which appears in the left menu once you have a contract placement. Every contractor is also a placement: a contract placement shows in both.

What a contract placement hands to a timesheet or payroll system

Lovelio does not run timesheets or payroll. A connected timesheet or payroll partner reads these off the placement through the API, and the contract form collects them:

  • Workplace: where the contractor does the work, picked from the client's sites. "Somewhere else..." types a new address in, and it becomes a site on the client for next time. Sites are also managed on the client record (Overview tab, Sites). A site in Australia picks its state from a list (New South Wales, Victoria, Queensland, South Australia, Western Australia, Tasmania, the ACT, the Northern Territory), and Lovelio stores the short code (NSW, VIC and so on). The state decides which public holidays apply, and payroll partners read it to pay the right holiday rates. A state typed in over the API or by the AI in any spelling ("New South Wales", "nsw", "Sydney") is saved as the code; one that names no state is refused. Removing a site never strips the payroll details off a live placement.
  • Timesheet approvers: the client contacts who sign the contractor's timesheets, in order. Every approver needs an email on their contact. The order is the role: the first is the primary approver, the second the secondary, any more are additional; the first one ticked is primary, so untick and tick again to change it. The partner receives each approver's name (split into first and last name), email and mobile. A mobile is the contact's phone when it is a mobile number in a country Lovelio can tell (Australia 04, New Zealand 02, UK 07 and a few more); the partner texts sign-in codes to it. The contractor's first name, last name and mobile go across the same way.
  • Payroll details for the contractor: the workplace's country decides which fields apply, and there is no setting to pick a region. A site in Australia shows the Australian fields: Paid as (PAYG through the agency, or ABN, invoicing under their own ABN) and, for an ABN contractor, the ABN itself (checked with the ATO checksum), the entity name it is registered to and whether it is GST registered. A recipient-created tax invoice (RCTI) is made out to that entity, and its GST line depends on the registration, so the payroll partner needs both. A consultant whose clients are all in one country only ever sees that country's fields. A country Lovelio has no fields for yet shows one line saying so. Details are stored on the person, once per country, so the next placement pre-fills them; they also show and edit in a Contracting section on the candidate record.
  • Position and Rate template: the payroll partner's own lists. The partner pushes them to Lovelio (PUT /v1/payroll-reference/positions and /rate-templates, the whole list each time), and the contract form shows a Position and a Rate template dropdown once a list exists. Pick them when you log the placement or in the placement's Contract tab; the pick goes back to the partner on placement.updated as contracting.position and contracting.rate_template, in the partner's own ids. There is nothing to type in Lovelio: when the partner stops sending an entry it leaves the dropdown, and placements that already picked it keep it. Only contract placements take them.
  • Payment terms: how many days the client has to pay, from the client's terms (their own variation, otherwise the agency standard). Nothing extra to enter.

Approving a placement for payroll

Where the agency's payroll partner waits for an admin's check before it takes a placement, a contract or temp placement shows a Payroll line: Approve for payroll until someone approves it, then who approved it and when. Temp placements are contract placements in Lovelio, so they work the same way; perm placements never go to payroll and never show it. Approving sends the partner placement.approved once; changes after that reach them on placement.updated as usual, and an edit never undoes the approval. Admins can approve by default; give another role the "Approve placements for payroll" power in Settings, Permissions. Approval is made by a person in Lovelio, never through the API, so a partner can never approve its own trigger. The Placements table's status filter has a Waiting for approval option that lists every contract or temp placement still to approve. The line and the filter only appear for an agency whose payroll partner has subscribed to placement.approved; everyone else never sees them.

Lovelio never stores a tax file number or bank details. The payroll partner collects those from the contractor directly.

On the API, all of this sits in the placement's contracting object. The workplace and approvers come with placements:read; the payment terms and the contractor's payroll details need the "Contractor payroll details" scope (placements:contracting:read), so a key that reads placements does not automatically see how a contractor is paid.

Credit splits

Every placement carries a credit split: one line per consultant with an optional role (candidate consultant, job owner, business development, or other) and a percent. The percents always total 100. A placement logged without a split credits the owner at 100%, so nothing changes for an agency that never touches splits.

On a contract placement the Log placement form has the split too: it starts with you at 100%, each line shows its share of the expected GP as you type, and it saves with the placement. If the split cannot save, the placement is still logged and Lovelio says so; set the split on the placement afterwards. Later, the split is edited in the Credit section of the placement slideout ("Edit", change the lines, "Save changes"). Each line shows the consultant's money: their percent of the placement's value (the fee for perm, expected GP for contract). The team roll-up line shows how the money is counted per team - each consultant's share counts for the team they belonged to when the credit was written, and a later desk move never rewrites it. The agency's revenue is counted once regardless of how many consultants split the credit.

A consultant named on a split can always open that placement, even when team data visibility would otherwise hide it - being credited is visibility.

A candidate can only be placed once on a job. Logging a second placement for the same application, or the same candidate and job, is blocked with "This candidate is already placed on this job."

How logging works

A placement always starts with a job. The log form asks for the job first, and only offers OPEN jobs (Active or On Hold) that have somebody live on them; picking one then offers that job's own candidates with the stage each is sitting at. The client comes from the job, so there is no client to choose and no way to compose a placement between a person and a company that never met. If a job has nobody live on it, the form says so and points you at adding the candidate to the job first.

Closed and filled jobs are not in the list, and the rule is enforced everywhere, not just in the form: logging a placement on a Closed or Filled job is refused whether it comes from the deal file, Ask Lovelio, Slack or the API. If you closed the job before logging the placement, set it back to Active, log the placement, and close it after. Historical placements loaded by a data migration are exempt, since those jobs closed years ago.

Every entry point uses the same rules: the "Create placement" button on the Placements tab, the deal file, Quick Create, Ask Lovelio, Slack and the API. The client slideout only ever shows placements read-only - it has no create button of its own, so a placement can't be started before a candidate has actually reached the client. After the job and candidate, the form asks for the base salary and currency, then "Plus super, OTE or bonus?" for anything on top, then fee type, start date and guarantee days. The review shows the maths before anything is written: the package and its parts, the fee basis and the figure the percent was taken of, the band or the minimum fee, and the fee. A logged offer prefills the base and the package.

Actions drive stages: creating a placement against a live application automatically moves that application to "Placed". Dragging a candidate to Placed manually never creates a placement, so there is no double move.

What a placement tidies up

A placed person is out of every other process, so the form shows "What happens next" before you click Create placement:

  • Their other live applications are withdrawn, each with a timeline note naming the placement ("Placed with Acme as Site Manager"). Every one is ticked by default; untick "Withdraw from" to keep them live on that job. The candidate gets no withdrawal email, because they accepted a job.
  • Future interviews on the withdrawn applications are cancelled. Both sides are told: the candidate through the "Interview cancelled" email, and the interviewer (the client contact, or the consultant on an internal screen) through "Interview cancelled - interviewer". Each email has its own switch in Settings, Notifications. Calendar events are removed.
  • The job stays open unless you tick "Close <job> as filled". Jobs can be multi-hire, so closing is your call, never a guess. The prompt shows how many other candidates are still live on it. Closing goes through the same door as closing a job anywhere else, so the close reason and the runners-up sweep happen as usual.
  • If there is no start date, the form says so: the guarantee clock cannot run until one is set. Add it now, or on the placement later.

The same defaults apply from Ask Lovelio, Slack and the API: withdraw the others, keep the job open. The API takes tidy_up.keep_application_ids and tidy_up.close_job. Historical imports skip the tidy-up.

Placed under guarantee

While a placement is pending start or started and its guarantee has not ended, the person is not an approach target. They do not appear in job matches, talent pool rediscovery, marketplace fits or the matches shown against an inbound lead, and the runner-up sweeps skip them. Wherever they would have been listed, the Placed pill reads "Placed by us at <client>, guarantee to <date>". A placement with no start date counts as under guarantee until one is set, since the clock has not started. Search still finds their record; they are just not pitched.

A contractor is held the same way while their contract runs, and comes back 8 weeks before it ends so they can be lined up for a next role. A contract going perm is held for 90 days after the end date, the same as a perm guarantee.

After logging, a Slack "Placement Made" card fires if Slack is connected, and if the candidate was introduced to the client via a spec in the last 12 months, the placement links back to that spec on both timelines as the agency's introduction record.

Confirming that a placement has started moves the candidate to their new job. A pending start keeps their existing employer. Their record updates to show the client as their current employer and the placed role as their current job title, and the move is added to their work history. It does not turn them into one of your client contacts: knowing where somebody works is not the same as having a relationship with them. When their employer matches a client, they can appear under "Works here" until a recruiter chooses "Make a contact".

Editing a placement (base salary, super, OTE, bonus, currency, fee, start date, guarantee, owner, notes) recomputes the package total and the fee figure automatically whenever a fee input changes, on the client's fee basis, unless the fee amount is set directly.

What currency a placement is in

There are two currency settings, and they cover the common case of an agency whose people are not all in one country.

  • The agency's currency lives in Settings > Hiring > Fees & Terms, on the standard fee schedule. This is what the whole agency bills in by default. A new agency starts on the currency of its own country rather than a fixed default.
  • A consultant's own currency lives in Settings > You > Profile, as "Placement currency". It is set to "Same as the agency" until they change it. A UK agency with a consultant based in France sets that person to EUR and leaves everyone else alone.

When a placement is logged, the currency is picked in this order, first match wins:

  1. Whatever the consultant picked on the form.
  2. The client's own fee terms, when an admin has put that client on their own terms. This beats a personal setting on purpose: what the client signed is what gets billed.
  3. The consultant's own currency.
  4. The agency's currency.

Changing either setting only affects placements logged from then on. A placement already saved keeps the currency it was billed in - nothing is ever relabelled after the fact.

Lovelio never converts between currencies. Where a total covers placements in more than one, it shows one figure per currency ("£12,000 + €8,400") rather than adding them together, because there is no exchange rate that would make a single number true for both. This applies to the Booked and Forecast cards on the home page, the billings cards on the Placements tab, and reports.

Review before logging

Each candidate keeps a separate draft while the placement window stays open. Review the salary, fee, fee source, acceptance date and planned start. A missing start date stays visible as "Start date needed". Logging the placement saves it as Pending start and shows a receipt. Confirm the actual start on the placement record when the candidate begins work.

An offer counter stays separate from the client’s original terms. Record whether the client agreed to the counter before accepting it. The placement uses the agreed terms. Client withdrawal moves the application to No; candidate decline moves it to Withdrew. Neither sends a candidate email.

Guarantee lifecycle

A placement has one of four statuses:

  • "Pending start" (the default when logged): the candidate has not started yet.
  • "Started": the candidate is in the seat.
  • "Fell off": the candidate left or was let go during the guarantee period.
  • "Completed": the guarantee period has ended and the fee can no longer be refunded.

Marking a placement as fell off (a free-text reason can be given) also moves the linked application to "Withdrew", so pipelines and metrics stop counting it as a placement. Reversing a fall-off (back to started or completed) restores the application to Placed, provided nobody has moved it manually in between. Fell-off placements drop out of billings.

The Guarantee column counts down

On the placements table, the Guarantee column shows how much of the guarantee is left on each row: "18 days left" while the fee could still be refunded, "Cleared" once the window has passed or the placement is marked completed, and "-" when there is no start date or no guarantee days. It is deliberately not coloured. A guarantee running down means the refund window is closing, so there is nothing to warn about, and every recent placement is inside its guarantee by definition - a red flag on all of them would say nothing.

The one warning on a row is a start date that has passed while the placement is still "Pending start", which shows in red under the date as "12 days overdue". It means nobody has confirmed the candidate turned up. The same warning appears on the client record's placements list, the job record's Placements tab, and the placement record itself. The countdown and the "fees at risk" totals read the same rule, so a row can never say "Cleared" while Analytics still counts it as at risk.

The Placements dashboard: the table, and Adjustments

Opening the Placements tab opens straight on the table of placements, with search and the owner and status filters. That is the page. There is no Overview or summary view in front of it.

Admins and team leaders get a second view, Adjustments: the period's quota ledger, reached by the pill group above the table. Arrows there step between periods, and locked periods refuse new adjustments with a "Locked" chip. Admins also get a "Set targets" link through to Settings > Hiring > Quotas. A consultant who cannot touch the ledger sees no pill group at all, just the table.

The view is in the URL (view=adjustments), so the ledger is shareable. Any other link - an owner or status filter, a placement id, or an old view=overview bookmark - opens the table.

Each job record also has a Placements tab showing the placements on that job with their credit split: each credited consultant, their percent and what their share is worth, plus which quota period the placement counts in.

When logging or opening a placement, a one-line hint says which quota period it counts towards ("Counts towards Q3 2026 quotas"), or why it does not - fell off, the type is excluded by the plan, or the recognition date is not set yet.

Forecast: where the money figures live

The Placements tab itself carries no forecast cards. The figures live where they are acted on:

  • Home: the Booked card shows your own quota progress for the period (credit-share money against your target) and the next start date, or how many starts are overdue when a start date has passed and the placement has not been marked started (the same overdue test the Placements table uses); the Forecast card shows the next three months.
  • The client record: billings with that client, pending starts, and fees at risk in guarantee for that client alone.
  • Analytics: "Fees at risk" is a column in the catalogue, so it can be sliced by consultant, client or period.

The definitions behind them are unchanged. Fees at risk means fees still inside the guarantee window (status pending start or started, today before the guarantee end date); a placement with no start date or no guarantee days is never counted. Billings for a month or quarter are the fee amounts of placements whose start date falls in it, because the fee is recognised on the start date. Fell-off placements are excluded. Fees are summed within each currency and shown one line per currency, never added across currencies.

Lovelio does no invoicing. Getting paid stays in the agency's accounting system.

Where it lives and shareable filters

Placements is a tab on the Clients page, at /clients?tab=placements. There is no Placements item in the left navigation. Old /placements links and bookmarks redirect to the tab automatically. The tab is hidden from roles without permission to view placements, so a role that can see clients but not fees will not see it.

The list filters by owner and status via two drop-downs, and both filters live in the URL, so a filtered view is a link that can be shared or bookmarked. Status accepts pending_start, started, fell_off or completed. Owner accepts a specific consultant or "me"; a link with owner=me shows each person who opens it their own placements. There is also a "Search placements" box that matches candidate name, client name and job title. Asking the AI something like "show my pending starts" opens the tab with those filters applied.

Offers

You do not have to log an offer before logging a placement. Anyone the client has actually seen - Submitted, Client interview or Offer - can be placed straight away, because a client can make an offer off the submission without ever interviewing. Create placement is greyed only for candidates the client has not been sent yet, and for closed applications.

There are no offer letters, e-signatures or offer approvals in Lovelio. In agency recruitment the client makes and signs the offer with the candidate. Lovelio's "Log offer" opens a short form to confirm the offer's details - the offered salary, the offer date (which defaults to today and can be backdated) and an optional start date. Logging it moves the application to the "Offer" stage and the days-waiting counter runs from the offer date. The Offer panel then shows the confirmed salary and start date; on offers logged before this form existed it shows the job's advertised band instead, labelled as such.

"Record offer outcome" is how the offer's answer lands, and it is only available while an offer is out. Accepted keeps the candidate at Offer and opens Create placement with the salary, currency and start date already filled in from the offer; the placement is what closes it. Declined asks who said no: the candidate declining moves them to Withdrew (they stay in your talent pool), the client pulling the offer moves them to No. No email goes to the candidate on a decline. Countered takes the new salary and start date, keeps the candidate at Offer and keeps counting the days, with a timeline row for the counter. Every outcome is written on the application and shown on the Offer panel.

Recording an outcome notifies the job's owner and the candidate's owner (the person who recorded it is not told twice). The "Offer responses" email switch in Settings, Notifications governs that email - it fires when the outcome is recorded, not when the placement is logged.

Possible lost fees

Above the placements table, Possible lost fees lists people you submitted or floated to a client in the last 6 months who now work at that client, with no placement logged. Lovelio learns where people work from the monthly profile check, from a LinkedIn visit with the Chrome extension, and from a new CV. Anyone placed or sent to a client in the last 6 months is checked each month, as well as the client contacts you work with. The same check puts anyone who changed company or title on the Key movement tab on Opportunities. Someone with no LinkedIn URL on their record is looked up by name so they can be checked too.

Each row shows who, which client, what they were sent for and when, who sent them, how long they have been there, and about what the fee would have been. The fee comes from the job's salary and the client's terms; a float has no job, so no figure. Click a row to see the full story: when they were sent, when they started, how Lovelio saw it, and the date the 6 months from the submission run out.

Log the placement opens the placement form on that job and person, even when the job is closed or the candidate was marked No, because that is what happened. For a float, pick the job at that client. Not a lost fee clears the row with a reason: they found them before we did, a different role, already sorted with the client, or not the same person.

A row clears itself as soon as a placement for that person at that client is logged, however it was logged. The person who sent them and the client's recruiters get a notification when a row appears. You see the rows for the clients you can see, plus anyone you sent yourself. It is included on every plan and costs nothing extra.

Common questions

  • Why can't I log a placement? The candidate must be live on an open job with that client. Add them to the job first, then log the placement.
  • Why can't I log a placement on a job I closed? A placement is logged on an open job. Set the job back to Active, log the placement, and close it after. The one exception is Log the placement on a possible lost fee, which works on a closed job.
  • Why is my job missing from the job list? Only jobs with at least one live candidate can be placed on. If everyone on the job is rejected, withdrawn or already placed, there is nobody left to place.
  • Why is the fee blank? A percent fee needs a salary to compute from. Enter the first-year base salary or switch to a fixed fee.
  • Why is the fee higher than the percent of salary? The client's terms price on the total salary package, so the percent was taken of base plus super, OTE uplift and bonus. The placement review and the placement record both show the package and the basis. Change the basis on the client's Terms tab.
  • Where did the fee percent come from? The salary's band on the client's fee terms. Type a different percent to override it.
  • Why is the currency not what I expected? Check whether the client is on their own fee terms, because those win over your personal setting. Otherwise it is your own "Placement currency" in Settings > You > Profile, falling back to the agency's in Settings > Hiring > Fees & Terms.
  • Why does my Booked number show two figures? Because that month has placements in two currencies. Lovelio shows both rather than converting one into the other. The percentage against target counts only the figure in your own currency.
  • Can I see everything converted into one currency? No. Lovelio does not do currency conversion anywhere, deliberately: a converted figure would depend on which day's rate was used and would not match what was invoiced.
  • Someone fell off, what happens? Mark the placement "Fell off" with the reason. The application moves to Withdrew, the fee drops out of billings, and the fee stops counting as at risk.
  • Why does "fees at risk" show zero? A placement only counts as at risk if it has a start date and guarantee days and the guarantee has not yet ended.
  • Can I share a filtered view? Yes. Set the owner and status filters and copy the URL. The filters are in the link.
  • I placed someone but they are still on another job. Untick "Withdraw from" on that job when logging the placement keeps them live there. Otherwise the placement withdraws them; check the timeline on the other application for the note.
  • Why did the job stay open after the placement? Jobs stay open by default because many need more than one hire. Tick "Close <job> as filled" on the form, or close the job from its page.
  • Why is a placed person missing from my matches? They are under guarantee. The Placed pill on their record shows the date it ends; they come back into matching after that.