> For the complete documentation index, see [llms.txt](https://help.join.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.join.com/candidates-and-applications/offer-management.md).

# Offer management

Prepare, send and manage job offers directly from the candidate profile. Learn how offers are pre-filled from your job, what the candidate sees, and how to manage offers.

Offer management lets you prepare a job offer, send it to a candidate and track their response without leaving JOIN.

When a candidate's application reaches the `Offer` [pipeline stage](#user-content-fn-1)[^1], you can prepare an offer from their candidate profile. Most of the offer details are pre-filled from [your job](/jobs/job-creation.md#role-details), so you only need to review them, adjust anything specific to this candidate, and send. The candidate receives an email with a link to an offer page, where they can accept or decline.

With offer management you can:

* Prepare an offer with compensation, start date and employment terms pre-filled from your job
* Send the offer by email, using your email template for Offer type
* Track whether the candidate has accepted, declined or not yet responded
* Edit, resend, or withdraw an offer at any point

{% hint style="warning" %}
To prepare and manage offers for a job, you need to be a `Job Admin` or `Hiring Manager` on that job, or a `System Admin` on your company account. `Reviewers` can't see or manage offers. Read more about [hiring team roles](/jobs/hiring-team.md).
{% endhint %}

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FMADMdFBTwvniXwY69Kwm%2Foffer-send.gif?alt=media&amp;token=3b11f24a-bfd7-4300-9150-7431f1f9ada2" alt=""><figcaption><p>Full flow for sending an offer.</p></figcaption></figure>

***

### Preparing an offer

As soon as you move a candidate into the `Offer` stage, a card appears at the top of the `Overview` tab on their candidate profile, with a `Prepare offer` activity.

{% stepper %}
{% step %}
**Open the candidate profile**

Go to the job's `Applications` page and click the candidate in the `Offer` stage. Or simply locate the candidate in the `Candidates` tab and open their profile.
{% endstep %}

{% step %}
**In the offer card, click 'Prepare Offer'**

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FrgHQRwdlC753zNRxJ4uO%2Fprepare-offer.png?alt=media&amp;token=b27e895b-92c6-4a5a-9b17-ff4fad5b991b" alt=""><figcaption></figcaption></figure>

The card shows the job title, so you can tell offers apart if the candidate has applied to more than one of your jobs.
{% endstep %}

{% step %}
**Review and set up the offer details and terms**

The `Prepare the offer` window opens with the offer details pre-filled from your job. Review and complete them. See [Offer details](#offer-details) and [Employment terms](#employment-terms) below.

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FtT2NotxJbN8DSN89DvRW%2Foffer-details.png?alt=media&amp;token=72dce546-ec5b-492c-abee-2429180400ed" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Send offer email**

Click `Compose offer email`. The email composer opens with your default [Offer email template](/candidates-and-applications/candidate-messaging/email-templates.md#default-email-templates). It already contains a link to the offer letter. Changes here apply only to this email, not the template. Click `Send` to send it now, or [schedule it for later](#scheduled-offer-emails).

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FSAIIyzatLouVDWtFAH3z%2Fcompose-offer-email.png?alt=media&amp;token=682f3676-5ec6-4e41-ae79-0fba39f69ce0" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

***

### Finalising details and terms

The modal where you prepare your offer letter holds the core terms of the offer.

#### Offer details

* `Job title`: pre-filled from your job title. You can change it, for example to offer a different level of seniority.
* `Start date`: pick the candidate's first working day from the calendar.
* `Compensation`: enter the amount, then choose the currency (`EUR` by default) and the period: `Yearly`, `Monthly`, `Weekly`, `Daily` or `Hourly`.

{% hint style="warning" %}
Job title, start date and compensation are mandatory fields. The option to `Compose offer email` stays disabled until they're filled in.
{% endhint %}

#### Employment terms

The second section lists the employment terms for the role.

* `Workplace model`
* `Location`
* `Contract type`
* `Contract duration`
* `Probation period`
* `Weekly working hours`
* `Vacation days`
* `Benefits`

Click the edit icon <i class="fa-pen">:pen:</i> next to any term to change it for this offer. Editing a term here only changes this candidate's offer, not your job ad.

These fields are pre-filled from the employment terms you set when creating the job but they remain editable to adjust to refelect any changes you want to make to the final offer.

Editing works the same way as setting employment terms during job creation: you're taken through the same steps, and one change can lead to follow-up questions.

{% hint style="info" %}
`Benefits` are pre-filled only with the benefits you selected when setting up the job. Benefits written directly into the job ad text aren't carried over. Click the edit icon to add them to the offer.
{% endhint %}

***

### Sending the offer email

Clicking `Compose offer email` opens the email composer, pre-filled with your company's default Offer email template. The template includes an `{ Offer Link }` placeholder[^2], which JOIN replaces with the candidate's personal link to the offer page when the email is sent.

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FKmvwhIsOYsIGovTql52o%2Fsend-offer-email.gif?alt=media&amp;token=682ad4a8-8b0a-4a8d-8bf6-d4117540e772" alt=""><figcaption></figcaption></figure>

You can send the email as it is, edit it directly in the composer, or switch to another offer template:

1. Click `Templates` in the composer
2. Under `Offer templates`, hover over a template to preview it
3. Click a template to insert it, or use `Language` to switch the template language

When you're ready, click `Send`. You can also use the arrow next to `Send` to schedule the email for later.

{% hint style="warning" %}
The offer email must contain the `{ Offer Link }` placeholder in the body. If you remove it, `Send` is disabled until you add it back.
{% endhint %}

{% hint style="info" %}
Offer emails are always private. Only you and the members you add to the conversation can see the email thread, and it can't be made public.
{% endhint %}

Once the email is sent, the `Offer` card changes to `Offer sent`, with the note "Candidate did not respond to the offer yet". An entry is added to the candidate's `Activity Log`.

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FJDDCT3FZ9ImvVF8p9Zdk%2Factivity0logs-offer.png?alt=media&amp;token=6e416077-b12a-4988-8078-246f3e18b2e5" alt=""><figcaption></figcaption></figure>

#### Scheduled offer emails

If you schedule the offer email, the offer stays a draft until it's sent, and a banner on the `Offer` card shows when it's due to go out. The offer link only becomes active once the email is sent.

* To cancel the scheduled email, use the banner on the `Offer` card. The offer draft is kept.
* To reschedule, cancel the scheduled email and schedule it again from the composer.
* You can still edit the offer while it's scheduled. The email uses the offer as it is at the time of sending.

{% hint style="info" %}
If the candidate is rejected or moved out of the `Offer` stage before the scheduled time, the scheduled email is cancelled automatically.
{% endhint %}

#### Offer email templates

Your account includes a default `Offer` email template, available in all supported languages. To change the wording for every offer, or to create alternative versions:

1. Click your name in the bottom-left corner and select `Settings`
2. Select `Emails` in the `Templates` section
3. Edit the default `Offer` template, or click `+Add template` and choose `Offer` as the `Email type`
4. Make sure the body includes the `{ Offer Link }` placeholder, otherwise the template can't be saved
5. (Optional) Select `Use template by default for this type of email`
6. Click `Save`&#x20;

<div data-with-frame="true"><figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FWKEPlqWorW8aWQ5JEXN7%2Fimage.png?alt=media&amp;token=bdd86212-803b-4767-ac11-2489e948d40c" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
The `{ Offer Link }` placeholder can only be used in the body of `Offer` templates, not in the subject line or in other template types. `Offer` templates are only available when sending an offer, not in regular emails. Read more about [email templates](/candidates-and-applications/candidate-messaging/email-templates.md)
{% endhint %}

***

### Offer statuses

The `Offer` card on the candidate profile always shows the current status of the offer.

Click the <i class="fa-ellipsis">:ellipsis:</i> menu on the card to see the actions available for that status.

<table><thead><tr><th width="183.859375">Status</th><th>What it means</th><th>Available actions</th></tr></thead><tbody><tr><td><code>Offer sent</code></td><td>The offer email has been sent and the candidate hasn't responded yet</td><td><code>Edit</code>, <code>Resend offer</code>, <code>Copy offer link</code>, <code>Withdraw offer</code></td></tr><tr><td><code>Offer accepted</code></td><td>The candidate accepted the offer</td><td><code>Withdraw offer</code></td></tr><tr><td><code>Offer declined</code></td><td>The candidate declined the offer</td><td><code>Edit</code>, <code>Withdraw offer</code></td></tr><tr><td><code>Offer expired</code></td><td>The candidate didn't respond within 14 days</td><td><code>Edit</code>, <code>Resend offer</code></td></tr></tbody></table>

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FumAmZ5zN8mrHqZv9jB8S%2Foptions-on-offers.png?alt=media&amp;token=416ed004-3d9a-4e38-ba5c-f01403c2d8ab" alt=""><figcaption></figcaption></figure>

***

### Candidate's view of an offer

Here's how the offer looks from the candidate's side, from the moment you send it until they respond.

#### Offer email

The candidate receives the offer email you sent from the composer, with a link to their offer letter. The email comes from you, so if they reply with questions, their reply arrives in the private offer thread on their candidate profile.

#### Offer page

When the candidate opens the link, they see a `Review the offer` page with their profile picture, your company logo, and the line "Review the details of {Company name}'s offer. Accept or decline it below."

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2F5EYECrQSiGBazP3jA9LY%2Fcandidate-accepted.gif?alt=media&amp;token=aa35ce05-a40a-47a0-9fb2-63f31a5a453e" alt=""><figcaption></figcaption></figure>

Below that, a `Contract details` section lists everything you had set in the offer:

* `Job title`, `Start date` and `Compensation`
* `Workplace model`, `Location` and `Hybrid work policy`
* `Contract type`, `Contract duration` and `Probation period`
* `Weekly working hours`, `Vacation days` and `Benefits`

At the bottom of the page, they can click `Accept offer` or `Decline`.

If you update the offer after the candidate has already opened it, the offer page shows a banner letting them know the recruiter updated the offer that day. If they haven't opened it yet, they see the latest version without a banner.

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2Fb6qquvLnQaB7F0XiAZNK%2Fupdated-offer.png?alt=media&amp;token=fddcfbdf-222f-4aec-ad3d-09bffd3ffeaf" alt=""><figcaption></figcaption></figure>

#### Accepting the offer

When the candidate clicks `Accept offer`, they're asked to confirm. Once they confirm:

* The page changes to "You accepted the offer", with the message "We already notified the recruiter. Congratulations!"
* The contract details stay visible below, and the response buttons are replaced with `Go to Dashboard`
* JOIN sends the candidate a confirmation email to the candidate as well as the recruiter

#### Declining the offer

When the candidate clicks `Decline`, a `Decline this offer?` window opens. They can add an optional reason for declining, up to 1,500 characters, then click `Decline` to confirm. Once they confirm:

* The page changes to "You declined the offer", with the message "We already notified the recruiter."
* If they gave a reason, it's shown below the message
* The contract details stay visible below, and the response buttons are replaced with `Go to Dashboard`
* JOIN sends the candidate a confirmation email to the candidate as well as the recruiter

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2F9kY6YbLvYIuiFJd9nWp3%2Fdeclined-offer.png?alt=media&amp;token=a3f9aa89-7574-4872-90cd-87fa7ae96119" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The confirmation emails for accepting or declining are system emails sent by JOIN. They aren't part of the email thread and can't be edited in `Settings` → `Emails`.
{% endhint %}

#### When the offer link no longer works

If the offer is no longer active, the candidate sees a message instead of the offer:

<table><thead><tr><th width="339.3046875">Situation</th><th>What the candidate sees</th></tr></thead><tbody><tr><td>The offer expired after 14 days of inactivity</td><td>"The offer link has expired"</td></tr><tr><td>You withdrew the offer</td><td>"This offer has been withdrawn. Please contact the recruiter for more information."</td></tr><tr><td>The offer was deleted, for example because the candidate profile was deleted</td><td>"This offer is invalid"</td></tr></tbody></table>

***

### Next steps after a response

When the candidate accepts or declines, or the offer expires, JOIN notifies the recruiter who sent the offer, by email and in-app. The `Offer` card on the candidate profile updates, and an entry is added to the candidate's `Activity Log`.

The candidate's pipeline stage doesn't change on its own. They stay in the `Offer` stage whatever the outcome, so you decide what happens next.

{% hint style="info" %}
You can choose how you receive offer notifications (`Candidate accepted the offer`, `Candidate declined the offer` and `Offer expired`) in `Settings` → `Notifications`.
{% endhint %}

#### Accepted offers

When the candidate accepts, the `Offer` card changes to `Offer accepted`. Click the card to see a read-only summary of the contract details the candidate accepted.

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FUwN2vJ9d97DgcdVbOl5I%2Fcandidate-accepted-on-cp.gif?alt=media&amp;token=4ba184db-0780-4061-9cd4-cbc9c58bc7c6" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Accepting an offer doesn't move the candidate to `Hired`. Click `Hire` on the candidate profile, or move them to the `Hired` stage on the pipeline board, to complete the hire.
{% endhint %}

If the hire falls through after the candidate accepted, you can withdraw the offer from the <i class="fa-ellipsis">:ellipsis:</i> menu. See [Withdrawing an offer](#withdrawing-an-offer).

#### Declined offers

When the candidate declines, the offer card shows the status as `Offer declined`. If they gave a reason, you can read it at the top of the offer when you click the card.

From here you can:

* **Update the offer and send it again**, for example with a higher salary or a later start date.
* **Move the candidate to another stage** in your pipeline, for example back to an interview stage
* **Reject the candidate** if you're not continuing with them. Read more about rejecting candidates
* **Withdraw the offer** from the <i class="fa-ellipsis">:ellipsis:</i> menu

To update and resend a declined offer:

1. Click the `Offer declined` card, or select `Edit` from the <i class="fa-ellipsis">:ellipsis:</i> menu
2. Update the offer details or employment terms
3. Click `Update offer`. The email composer opens.
4. Review the email and click `Send`

The offer status changes back to `Offer sent`, and the candidate can respond again.

#### Expired offers

An offer link is valid for 14 days after it's sent. If the candidate doesn't respond in that time, the offer expires and the `Offer` card changes to `Offer expired`.

From here you can:

* **Resend the offer**: select `Resend offer` from the <i class="fa-ellipsis">:ellipsis:</i> menu, review the email, and click `Send`. The link becomes active again for another 14 days.
* **Edit the offer** before resending, if the terms need to change
* **Move the candidate to another stage**, or reject them if you're not continuing

{% hint style="info" %}
Every time you send or resend an offer, the 14-day expiry restarts from that send.
{% endhint %}

***

### Editing an offer

You can edit an offer that has been sent, declined or has expired. Select `Edit` from the <i class="fa-ellipsis">:ellipsis:</i> menu on the `Offer` card. The `Update the offer` window opens with the current offer details.

Make your changes, then click `Update offer`. `Update offer` stays disabled until you change something.

* **For a sent offer**, updating changes the offer behind the existing link. No new email is sent, and the candidate sees the updated terms the next time they open the link.
* **For a declined offer**, updating opens the email composer so you can send the new offer to the candidate.

If you close the `Update the offer` window without clicking `Update offer`, your changes are discarded and the current offer stays active.

***

### Resending an offer

Use `Resend offer` to send the candidate the offer email again, for example if they can't find the original email or the offer has expired.

`Resend offer` opens the email composer so you can review or adjust the message before sending. It doesn't change the offer terms. To change the terms, use `Edit` instead.

To share the offer page through another channel, select `Copy offer link` from the <i class="fa-ellipsis">:ellipsis:</i> menu. This is only available while the offer is `Offer sent`.

***

### Withdrawing an offer

Withdraw an offer when it should no longer stand, for example if the terms were wrong or the role is no longer available.

1. Click the <i class="fa-ellipsis">:ellipsis:</i> menu on the `Offer` card
2. Select `Withdraw offer`
3. Confirm in the window that opens

<figure><img src="https://1825767176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEdFjOFlkC1DEfDv3nGRh%2Fuploads%2FumAmZ5zN8mrHqZv9jB8S%2Foptions-on-offers.png?alt=media&amp;token=416ed004-3d9a-4e38-ba5c-f01403c2d8ab" alt=""><figcaption></figcaption></figure>

When you withdraw an offer:

* The offer link stops working. The candidate sees "This offer has been withdrawn. Please contact the recruiter for more information."
* The candidate is **not** rejected and stays in their current stage
* The `Prepare offer` activity reappears on the `Offer` card, so you can prepare a new offer
* An entry is added to the candidate's `Activity Log`

{% hint style="warning" %}
A withdrawn offer can't be reactivated. To make the candidate an offer again, prepare a new one from the `Prepare offer` activity.
{% endhint %}

{% hint style="info" %}
Rejecting a candidate with an active or accepted offer withdraws the offer automatically.
{% endhint %}

***

### Offers on archived jobs

Archiving a job doesn't change its offers. Offer links keep working, candidates can still accept or decline, and the 14-day expiry continues.

However, you can't edit, resend, withdraw, copy the link of, or send an offer on an archived job. These actions are disabled with the tooltip "Not available for archived jobs." Unarchive the job to use them again.

{% hint style="success" %}
If you're still negotiating with a candidate but want to stop receiving new applications, set the job offline instead of archiving it. Offline jobs aren't affected.
{% endhint %}

***

### FAQs

<details>

<summary>Can I hire a candidate without sending an offer?</summary>

Yes. Offers are optional. You can move a candidate to `Hired` without sending an offer through JOIN.

</details>

<details>

<summary>Why can't I see the Prepare offer option?</summary>

Check that the candidate is in the `Offer` stage, and that you're a `Job Admin` or `Hiring Manager` on the job, or a `System Admin` on your account. `Reviewers` can't see or manage offers. If the job is archived, offer actions are disabled.

</details>

<details>

<summary>Why is the Send button disabled in the offer email?</summary>

The email body is missing the `{ Offer Link }` placeholder. Click the `{...}` icon in the composer and insert `Offer Link` into the body.

</details>

<details>

<summary>Why can't I add custom stages inside the Offer stage anymore?</summary>

`Offer` is a fixed stage and no longer supports custom stages inside it. The offer status on the candidate profile now tracks where each candidate is in the offer process. If your pipeline had custom stages within `Offer`, candidates in those stages were moved to the `Offer` stage.

</details>

<details>

<summary>Can I use the Offer email template in a regular email?</summary>

No. `Offer` templates are only available when you send an offer from the candidate profile or when you add an [automation to send email](/candidates-and-applications/automations.md#send-email) at the Offer state. For other emails, use a `General` template.

</details>

<details>

<summary>The candidate accepted the offer. Why are they still in the Offer stage?</summary>

Accepting an offer doesn't move the candidate automatically. Click `Hire` on their candidate profile, or move them to the `Hired` stage on the pipeline board.

</details>

<details>

<summary>Can I change how long the offer link is valid?</summary>

No. Offer links are valid for 14 days after each send. Resend the offer to give the candidate another 14 days.

</details>

<details>

<summary>What happens to an offer if I reject the candidate?</summary>

If the offer has been sent or accepted, it's withdrawn and the link stops working. If the offer hasn't been sent yet, the draft is deleted. If you undo the rejection, a new `Prepare offer` activity appears, pre-filled with the terms of the previous offer.

</details>

<details>

<summary>What happens if the candidate withdraws their application?</summary>

Any offer you've sent is withdrawn, and the offer link stops working. The offer is removed from the candidate profile, but the history stays in the `Activity Log`.

</details>

<details>

<summary>Can the candidate respond to the offer by email instead?</summary>

If the offer email is sent from the recruiter's email address, not a no-reply address. The candidate can reply with questions, and the reply is synced to the private offer thread in JOIN. To record their decision on the offer, they need to accept or decline on the offer page using the link attached to .

</details>

[^1]: A pipeline stage is a step in your hiring process, such as `Application Review` or `Offer`. It shows where a candidate's application is. Read more on [Pipeline management](/candidates-and-applications/pipeline-management.md#fixed-stages)

[^2]: Placeholders are dynamic variables that automatically personalise parts of your emails, such as the candidate's name or the job title. Read more on [Email Templates](/candidates-and-applications/candidate-messaging/email-templates.md#using-placeholders)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.join.com/candidates-and-applications/offer-management.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
