# Job posting images: a share card for every opening, from your job board or ATS

> Give every job opening its own share card — title, company, location, salary — for LinkedIn, social posts and the careers page, from your job board data.

Published 2026-11-07 · https://shareglint.com/en/use-cases/job-board-images

Job postings get shared a lot: recruiters post them on LinkedIn, teams drop them in Slack, friends forward them in messaging apps. Each share shows the page's `og:image`, and on most careers pages that is the company logo or a stock photo — the same image for every opening. A card with the job title, location and salary tells people what the link is before they click. With Shareglint that card comes from the posting's own data, for every job, without anyone designing it.

## Templates for hiring

| Template | Use | Fields |
|---|---|---|
| `job-posting` | One opening: the share card for its page and post | title, company, location, salary, type, eyebrow, CTA, site, logo |
| `hiring-roles` | "We're hiring" posts listing up to four roles | title, company, four roles, location, CTA, site, logo |
| `new-hire` | Welcoming someone to the team | name, role, team, date, photo, logo |
| `career-new-role` | An employee's new-role announcement | new title, name, company, previous title, start date, photo, company logo |
| `team-grid` | The team behind the openings | title, up to eight names, roles and photos, logo |

All render in every size preset (og 1200×630, square 1080×1080, portrait 1080×1350, story 1080×1920, pinterest 1000×1500, youtube 1280×720) and take `accent` and `theme`; the [careers category](https://shareglint.com/en/templates/category/careers) of the gallery shows them.

## A card in every job page's og:image

For a job board or careers site, the cleanest route is a **signed URL** in the job page template: the page computes the image URL from the job's fields, signed with your secret, and the image renders the first time LinkedIn or Slack fetches it ([signed image URLs](https://shareglint.com/en/guides/signed-image-urls)):

```html
<meta property="og:image" content="https://shareglint.com/i/acc_…/job-posting.png?title=Senior%20Backend%20Engineer&company=Northwind&location=Remote%20(EU)&salary=%E2%82%AC80k%E2%80%93100k&type=Full-time&s=…">
```

No API call at publish time, nothing rendered for jobs nobody shares, and a job whose title or salary changes gets a new image because its values changed. On a board with thousands of postings, this costs renders only for the ones that are shared. The [Open Graph image guide](https://shareglint.com/en/guides/what-is-an-open-graph-image) covers the other tags and how each network reads them.

**A multi-employer board** passes each employer's logo and `accent` colour with the posting, so every company's jobs look like that company — one template, many brands.

## "We're hiring" posts

For social, render the open roles from your ATS export or careers page data:

```bash
curl -X POST "https://shareglint.com/v1/images?wait=true" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template": "hiring-roles",
    "sizes": ["square", "og"],
    "modifications": {
      "title": "We are hiring",
      "company": "Northwind",
      "role_1": "Senior Backend Engineer",
      "role_2": "Product Designer",
      "role_3": "Customer Success Lead",
      "location": "Remote in the EU",
      "cta": "Apply at northwind.dev/jobs"
    }
  }'
```

The square image is for LinkedIn and Instagram feeds, the 1.91:1 for posts with a link. For one card per opening, send the open roles as a CSV batch to `job-posting`; rows per batch by plan: Free 50, Starter 500, Pro 1,000, Scale 2,000, Business 5,000. An automation tool can render a card whenever a new job is published in your ATS or careers spreadsheet ([integrations](https://shareglint.com/en/integrations)).

## Google for Jobs is a different channel

Google's job search does not use `og:image`. It reads the JobPosting structured data on the page, and the logo it shows comes from `hiringOrganization.logo`; Google's documentation also says the logo's width-to-height ratio must be between 0.75 and 2.5 ([Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/job-posting)). Keep both: structured data with a proper logo for Google, a generated card in `og:image` for every place the link is shared.

## What to put on the card

- **Title and location first.** They decide whether the right person clicks. "Remote" needs a region or time zone more often than not.
- **Salary if you publish it.** Many job seekers look for it first, and in some places pay transparency rules require it in the posting; the card is generated from the same data, so it cannot disagree with the posting.
- **Type and seniority** in the eyebrow or `type` field: full-time, contract, senior.
- **Your logo**, not a stock photo of people at laptops.

Long titles shrink to fit their box, but titles like "Senior Staff Software Engineer, Platform Infrastructure (Remote)" read better shortened on the card and in full on the page.

## For job boards with many employers

A board that lists thousands of jobs from many companies has two extra concerns. **Branding:** each employer's logo and colour come with the posting, so one template serves every brand, and employers on a premium listing can get their own copy of the template. **Volume:** because a signed URL renders only when a link is shared, the cost follows sharing, not the size of the index. Expired postings keep their images at the same URL for your plan's retention period, after which a new share simply renders the card again.

## Announcements around hiring

New hires and new roles are part of the employer brand: `new-hire` welcomes someone, `career-new-role` celebrates an internal promotion. Ask the person before posting their photo, and keep the tone theirs.

## Cost

One render per image and size; repeats are free. A careers page with 30 open roles, each shared now and then, renders about 30 cards; a weekly "we're hiring" post in two sizes adds about 9 a month. A board with thousands of postings pays only for those shared. The Free plan's 100 renders carry a watermark; Starter is $9 a month for 2,000 renders ([pricing](https://shareglint.com/en/pricing)).

## What it does not do

- No ATS or job board integration; job data comes from your page templates, exports or automations.
- No posting to LinkedIn or job boards; the image is a URL your page or scheduler uses.
- It does not write job descriptions or check them; the card shows the fields you send.

LinkedIn's own help explains how it builds link previews from a page ([LinkedIn Help](https://www.linkedin.com/help/linkedin/answer/a521928)); if a preview shows an old image after you changed the card, its Post Inspector refreshes it.

## FAQ

### How do I make an image for every job posting?

Use a job template and fill it from the posting's data — title, company, location, salary, type. On a job board or careers page, put a signed URL in the job page's og:image; for social posts, call the API or send the open roles as a batch.

### Does Google for Jobs use these images?

No. Google's job search shows the hiring organisation's logo from the JobPosting structured data (hiringOrganization.logo), not the page's og:image. The share card is for links shared on LinkedIn, X, Slack and messaging apps.

### Should the salary be on the image?

If you publish it in the posting, yes: it is the field people look for first. Where pay transparency rules apply, keep the image consistent with the posting, since it is generated from the same data.

### Can a job board give each employer its own branding?

Yes. Pass the employer's logo and an accent colour with each posting; the same template renders every employer in its own colours.
