---
title: "Automation action applied event"
method: POST
path: "automation.action.applied"
tags: ["Webhook Events"]
---

# Automation action applied event

`POST automation.action.applied` (webhook)

An automation changed something, such as an ad set paused or a budget raised.

### Payload notes

`previous` and `target` carry the value before and the value set. Each action sends one event; dedupe on `id`, which stays the same if the event is sent again.

## Payload

- WebhookPayloadAutomationAction: Webhook payload for `automation.action.applied`, `automation.action.failed` and `automation.action.unknown`: one change an automation made or tried. Sent once per action as it settles. A refusal decided before any platform call (no live ads, a budget already at its limit) arrives as `automation.action.failed` with `status: skipped`. An `unknown` action is read back by the next check and sent again with its final status.
  - `id` string, required: Stable webhook event ID: the dedupe key, also sent as the X-Zernio-Event-Id header and identical on every retry and redelivery.
  - `profiles` object[]: The profiles this event belongs to, each with the externalId you set on it (null when none is set). Use it to route the event to your tenant without storing Zernio profile ids. Present on every event tied to a profile, absent on events that belong to none. Events spanning several profiles (a post published to accounts of different profiles) list each once.
    - `id` string, required
    - `externalId` string, nullable, required
  - `test` boolean: Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
  - `event` 'automation.action.applied' | 'automation.action.failed' | 'automation.action.unknown', required
  - `automation` WebhookAutomationRef, required
    - `id` string, required: The automation's id: the ad rule id for `ad_rule`.
    - `kind` string, required: The product the automation belongs to: `ad_rule` today. New values may be added.
  - `accountId` string, required: The connected account the automation acts on.
  - `checkId` string, required: The check that recorded the action.
  - `action` object, required
    - `id` string, required
    - `subjectId` string, required: The platform's id of the object changed: an ad, ad set or campaign for ad rules.
    - `type` string, required: `pause`, `activate`, `adjust_budget` or `notify` for ad rules. New values may be added.
    - `status` 'applied' | 'skipped' | 'failed' | 'unknown', required
    - `reason` string, nullable, required
    - `previous` object, nullable, required: The value before the change, such as `{ "dailyBudget": 40 }`.
    - `target` object, nullable, required: The value the change sets, such as `{ "dailyBudget": 48 }` or `{ "status": "paused" }`.
    - `actedAt` string, date-time, required
  - `timestamp` string, date-time, required

## Acknowledgement `200`

Webhook received

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) - [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/a79c233ebf22?raw)
