How to Set Up Automated Social Job Postings Without Breaking Employment Ad Rules
Automating job postings across social media is mostly a solved problem. You connect a job feed, the platform builds an ad per role, and campaigns launch and pause without anyone logging into Ads Manager. The part that goes wrong is smaller and less discussed: every campaign your automation creates has to be declared as an employment ad, and that declaration strips out most of the targeting recruiters are normally taught to use. Get the declaration right once and the whole system runs unattended. Get it wrong and you either see rejected ads or, worse, live campaigns targeting job ads by age and gender.
This guide covers the setup in the order you actually have to do it, and it is specific about the settings that decide whether the automation holds.
What does automated job posting actually automate?
Three separate things, and it helps to name them, because teams often buy one and expect all three.
The first is distribution. Your open roles leave your ATS or career site as a feed, and a platform turns each role into an ad on each channel. Wonderkind, for example, states that it lets teams fully automate job ad distribution across Facebook, LinkedIn, Google and TikTok, and that customers can use their own XML to integrate.
The second is creative production. The role's text becomes a channel-native ad, sized and formatted per placement, without a designer in the loop for every vacancy.
The third is campaign management: budget allocation, bidding, pausing a filled role, restarting a reopened one.
Only the first two are genuinely hands-off from day one. Campaign management still needs rules you set deliberately, and the most important of those rules is a compliance setting.
Why does every automated job ad need an employment declaration?
Because the ad platforms treat employment ads as a restricted category, and they require you to say so at campaign level.
On Meta, this is the special_ad_categories field. Meta's Marketing API documentation is explicit that all campaign creations require the special_ad_categories field, and that it accepts HOUSING, EMPLOYMENT, CREDIT, ISSUES_ELECTIONS_POLITICS or NONE. A job ad is EMPLOYMENT. There is no default that guesses this for you.
That single line is the crux of automated job advertising. If your automation creates campaigns through the API and does not set EMPLOYMENT on each one, it is creating uncategorized campaigns at whatever scale your feed runs at. Nobody notices, because the campaigns work. They work by using targeting that employment ads are not allowed to use.
On TikTok the same idea arrives as a toggle. TikTok's policy requires advertisers to use the Special Ad Category Toggle to self declare when they are running housing, employment or credit ads, and it applies to advertisers based in the United States, or advertisers targeting audiences in the United States or Canada.
Google handles it through policy rather than a field. Its personalized advertising policy names employment as a restricted category in the United States and Canada, on the stated basis of ensuring equitable access to opportunities.
What targeting do you lose once you declare it?
More than most recruitment teams expect, and this is where a lot of existing social recruiting advice quietly stops applying.
On Meta, per the same Marketing API documentation, age options are generally fixed to include ages 18 through 65+, a specific gender cannot be targeted, and ZIP code selection is unavailable. Detailed targeting entries are individually blocked, returning an error that the selection is unavailable when running ads in this special ad category. Special Ad Audiences, which were the sanctioned replacement for lookalikes in this category, can no longer be created as of Marketing API v15.0.
On TikTok the published restriction list for the employment category is blunt. Age is 18+ only. Gender is not allowed. ZIP code targeting is not allowed. Lookalike audiences are not allowed. Interest keywords and hashtag targeting are not allowed. Automatic targeting is not allowed, and so is targeting expansion.
On Google, restricted targeting for the access to opportunities categories removes gender, age, parental status, marital status and ZIP codes. Location targeting is still permitted by radius, city and country, with a radius of at least 1 km.
Read those three lists together and a pattern appears. Automated job advertising is not allowed to be precise about who a person is. It is only allowed to be precise about where they are and what the job is. That is a design constraint, not a limitation to work around, and it changes what your automation should optimize.
Is this only a US problem?
No, but it arrives differently in Europe.
The channel toggles are scoped to North America. TikTok names the United States and Canada. Google names the United States and Canada. So a Benelux or DACH team running domestic campaigns will not always see the same category enforcement in the interface.
The constraint in the EU comes from data protection and equal treatment law instead. Under the Digital Services Act, according to the European Commission's own guidance, the DSA prohibits that providers of online platforms target advertisements using user profiling that relies on the special categories of data specified in Article 9(1) of the GDPR, such as sexual orientation, ethnicity or religious beliefs. The same guidance states that any use of profiling to present targeted advertisements is prohibited when the provider is aware with reasonable certainty that the user is a minor.
In the United States the underlying rule sits with employment law rather than platform policy. The EEOC states that it is illegal for an employer to publish a job advertisement that shows a preference for or discourages someone from applying for a job because of characteristics including sex, national origin, age at 40 or older, or disability, and gives the example of an ad seeking "recent college graduates" as one that may unlawfully discourage workers over 40.
The practical takeaway for a multi market team: build the automation to the strictest of these rules everywhere, rather than per market. One configuration is cheaper to run than four, and the strict configuration is legal in all of them.
How do you set it up, step by step?
Six steps, in this order. Steps one and two are the ones that must be right before you scale.
1. Declare the category at campaign creation, not after. Whatever creates your campaigns, whether a platform you buy or a script you own, must set the employment category on every campaign it creates. Test this by creating one campaign through the automation and reading the campaign back from the API to confirm the category is set. Do not verify this by looking at whether ads are delivering, because uncategorized campaigns deliver perfectly well.
2. Strip person-level targeting out of your templates. If your campaign templates carry age brackets, gender, ZIP lists, interest keywords or lookalike audiences, remove them from the template rather than relying on the platform to reject them. A template that gets silently corrected on one channel and passes through on another is how inconsistency enters a system nobody is watching.
3. Move precision into geography and the role itself. Radius around the work location, city, and country are all still available, with Google requiring at least 1 km. What replaces audience targeting is the ad itself: the shift pattern, the pay range, the site name, the certification required. A specific ad shown broadly outperforms a generic ad shown narrowly, and it is the only option left.
4. Map the feed fields your ads depend on. The role's location, employment type, and title do the work that targeting no longer can, so a feed with vague locations produces weak campaigns. This is feed plumbing rather than compliance, and it is worth doing before launch rather than after.
5. Set the lifecycle rules. Decide, in writing, what happens when a role is filled, when it is closed without a hire, and when it reopens. Automation that only knows how to start campaigns is what produces spend against roles that no longer exist.
6. Build one exception queue, not an approval step per ad. Approving every ad defeats the automation. Instead, route only the exceptions to a human: ads rejected on policy grounds, roles with no valid location, and campaigns whose category flag failed to set.
What breaks after launch?
Three things, reliably.
Rejections arrive per ad rather than per campaign, so a channel can be running at ninety percent while one role is stuck. Somebody has to own the rejection queue, or it silently becomes a hiring gap in one location.
Second, targeting drift. Someone edits a campaign by hand in Ads Manager, adds an audience, and the automation later rebuilds around it. Periodic auditing of live campaigns against your own template is duller than launch work and matters more.
Third, measurement expectations. Teams used to narrow targeting often read a broader audience as worse performance in the first two weeks. It usually is not, but the comparison needs to be cost per qualified applicant rather than click-through rate, because a broad audience with a specific ad will always look inefficient at the top of the funnel and settle out further down.
FAQ
Does declaring an employment ad reduce reach?
It reduces targeting precision, not reach. The available audience is usually larger, because person-level exclusions are gone.
Can I set the category once at the account level?
No. On Meta it is a campaign-level field, which is why automation that creates many campaigns has to set it on each one.
Do I still need the declaration if I only run in the Netherlands or Germany?
The channel category toggles are scoped to the United States and Canada, but the DSA and GDPR restrictions on profiling apply to EU users regardless. Building to the strict configuration everywhere avoids maintaining two systems.
Does this apply to organic job posts as well as paid ads?
These are advertising policies, so they bind paid campaigns. Employment law on discriminatory job advertisements applies to the wording of any job ad, paid or organic.
Can lookalike audiences ever be used for job ads?
Not for employment campaigns on Meta or TikTok. Meta's Special Ad Audiences, the former workaround, can no longer be created as of Marketing API v15.0.
Related articles
Never miss a post
Ready to write your own results?
Tell us what you need to hire and we'll show you what Wonderkind can do for your roles.
No credit card required