Custom WebhooksrecruitmentATSjob listings

How Recruitment Agencies Can Pause Job Ads When Positions Are Filled

Small Recruitment Agency7 min read

Stop Paying for Applications You Do Not Need

Recruitment advertising is uniquely wasteful when it runs without feedback from the hiring pipeline. A job listing goes live, paid ads drive candidates to the application page, and applications start flowing in. Within days — sometimes hours for popular roles — the hiring manager has more applicants than they can reasonably review. Yet the ads keep running, the budget keeps burning, and the applicant tracking system fills with candidates who will never be contacted. The agency pays for every click, and neither the client nor the candidates benefit.

The disconnect between your applicant tracking system (ATS) and your advertising platforms is the root cause. Recruitment advertising automation bridges that gap by letting real-time application data control campaign status. When a role has enough applicants, ads pause automatically. When a new role opens or a position needs more candidates, ads re-enable without manual intervention.

Why This Approach Works

Recruitment agencies and in-house talent teams manage dozens or hundreds of active job listings simultaneously. Each listing may have its own ad campaign across Google Ads and Meta Ads. Manually monitoring application volumes and toggling campaigns for each role is not scalable — it requires constant attention, and the delay between "we have enough applicants" and "ads are paused" is where budget leaks.

By connecting your ATS to AdTrigger via webhook, every application submission triggers a data update. AdTrigger evaluates the current application count against your defined threshold and takes action immediately. The logic is simple but powerful: if a role has received 100 applications, there is no business case for spending more on ads for that role. That budget is better redirected to harder-to-fill positions.

This approach also improves candidate experience. When ads run for roles that are effectively closed, applicants invest time in applications that go nowhere. Stopping ads promptly signals operational discipline and respects candidates' time.

How to Set This Up in AdTrigger

Step 1: Create a Data Source

In AdTrigger, navigate to Data Sources and create a new Custom Webhook source. Name it after your ATS or hiring pipeline — for example, "Greenhouse Pipeline" or "Workable Applications".

Step 2: Define Your Field Schema

Define the fields that your ATS or integration layer will send:

  • job_id (string) — the unique identifier for the job listing
  • job_title (string) — the role title for reference and logging
  • application_count (number) — total applications received for this role
  • status (string) — the listing status such as "open", "closed", or "on_hold"
  • department (string) — the team or department for the role

Step 3: Get Your Webhook URL and API Key

AdTrigger provides a unique webhook URL and an API key. The API key authenticates every request using Bearer token authentication in the Authorization header. Store this securely in your ATS integration settings or middleware.

Step 4: POST Data from Your ATS

Most modern applicant tracking systems support outgoing webhooks or have APIs you can poll. Configure a webhook that fires on every new application submission, or set up a scheduled script that queries your ATS API every 15 minutes and POSTs the current application counts to AdTrigger. Any system that can make an HTTP POST request is compatible — direct ATS webhooks, middleware like Zapier or Make, or a custom Lambda function.

Step 5: Build Your Rules

Create rules with conditions tailored to your recruitment workflow:

  • Pause when saturated: application_count greater than or equal to (gte) 100 — pause the Meta Ads campaign for that listing
  • Pause on manual close: status equals (eq) "closed" — pause all campaigns for the role
  • Re-enable when reopened: status equals (eq) "open" AND application_count less than (lt) 50

Use AND/OR compound conditions to create nuanced logic. For example, you might keep ads running for senior roles even at higher application counts because the quality bar is higher and conversion rates are lower.

Example Webhook Payload

Here is the JSON your ATS integration would POST to AdTrigger:

POST https://api.adtrigger.io/webhooks/<your-source-id>
Authorization: Bearer <your-api-key>
Content-Type: application/json

{
  "job_id": "JOB-2024-0847",
  "job_title": "Senior Frontend Engineer",
  "application_count": 112,
  "status": "open",
  "department": "Engineering"
}

With an application_count of 112, AdTrigger evaluates this against your rule threshold of 100, determines the condition is met, and pauses the linked ad campaigns. The role's ads stop immediately, and the freed budget can be allocated to positions that still need candidates.

Maximising Your Return on Ad Spend

  • Set different thresholds by role type: Entry-level positions may reach saturation at 50 applications, while specialist roles might warrant running ads until 200. Create separate rules for each tier rather than using a single threshold across all listings.
  • Use budget scaling for hard-to-fill roles: Instead of pausing campaigns for difficult positions, use budget adjustment actions to increase spend when application counts are low. If a role has fewer than 10 applications after a week, automatically increase the budget by 40% with a maximum cap to accelerate candidate flow.
  • Include quality signals if available: If your ATS tracks qualified vs. unqualified applications, add a qualified_count field. Set rules based on qualified applications rather than raw volume for more meaningful automation.
  • Review the audit trail for pipeline insights: AdTrigger's full audit trail shows exactly when each campaign was paused or re-enabled. Use this data to understand which roles attract candidates quickly and which need more advertising investment — valuable intelligence for pricing and strategy.
  • Leverage auto-revert on budget changes: When adjusting budgets upward for underperforming listings, use AdTrigger's auto-revert feature to ensure budgets return to baseline once conditions normalise, preventing runaway spend.

Common Pitfalls to Avoid

  • Using total applications instead of active applications: If your ATS counts withdrawn or rejected applications in the total, your threshold may trigger prematurely. Send only the count of active, unprocessed applications if possible.
  • Forgetting to handle role reopenings: Roles that are paused and then reopened need a clear re-enable path. Ensure your rules include an enable condition based on status returning to "open" with application count below threshold.
  • Not accounting for multi-channel campaigns: If a single role has campaigns on both Google Ads and Meta Ads, make sure your rules target all relevant campaigns. Missing one channel means budget still leaks on the other.
  • Setting thresholds without consulting hiring managers: The right application threshold depends on the role, not just a round number. A technical role with a 5% qualification rate needs far more applications than a role with a 30% rate. Discuss with hiring managers before setting thresholds.
  • Ignoring data freshness: If your ATS webhook only fires once a day, you could overshoot your threshold significantly before the rule triggers. Configure more frequent updates or use webhook data TTL settings appropriately.

The Bottom Line

Recruitment advertising without pipeline feedback is one of the most common sources of wasted ad spend in the industry. By connecting your applicant tracking system to AdTrigger via webhook, you create a closed loop where application volume directly controls campaign status. The result is precise budget allocation — money flows to roles that need candidates and stops flowing to roles that do not. This automation is available on Starter, Professional, and Enterprise plans, works with any ATS that supports webhooks or APIs, and typically shows measurable ROAS improvement within the first billing cycle.

Ready to automate this?

Set up this exact automation in AdTrigger — no code, no manual monitoring, just rules that act on real-time data.

Start Free