---
title: "Ads sync failed event"
method: POST
path: "account.ads.sync_failed"
tags: ["Webhook Events"]
---

# Ads sync failed event

`POST account.ads.sync_failed` (webhook)

Fired once per ad account when its ads stop syncing (no successful sync for 24 hours,
or every live ad at the retry cap). Checked hourly. Metrics for the ad account are stale
until `account.ads.sync_recovered` fires for it.

## Payload

- WebhookPayloadAccountAdsSyncFailed — Webhook payload for `account.ads.sync_failed` events. Fired once per ad account when its ads stop syncing: no successful sync for 24 hours, or every live ad in it at the retry cap. It does not fire again for the same ad account until `account.ads.sync_recovered`. Metrics for the ad account are stale meanwhile.
  - `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.
  - `event` 'account.ads.sync_failed', required
  - `account` WebhookAdsSyncAccount, required
    - `accountId` string, required — The ads connection's account ID (same as used in /v1/accounts/{accountId})
    - `profileId` string, required
    - `platform` string, required — The ads connection platform, e.g. metaads, googleads, tiktokads, linkedinads
    - `username` string, required
    - `displayName` string, nullable
  - `adAccount` WebhookAdsSyncAdAccount, required
    - `platformAdAccountId` string, required — The platform ad account ID, e.g. act_1489036928764209 on Meta
    - `name` string, nullable, required
  - `sync` object, required
    - `lastSuccessfulSyncAt` string, date-time, required
    - `failureCount` integer, required — Consecutive failed sync attempts on the ad account's ads.
    - `errorCategory` 'ad_account_not_listed' | 'sync_error' | 'stale', required — ad_account_not_listed = the platform no longer returns the ad account to this connection (access removed, or a platform-side change); sync_error = the platform returned an error, see `error`; stale = no sync succeeded and no error was recorded. New values may be added.
    - `error` string, required — Human-readable detail, for display and debugging. Branch on errorCategory.
  - `timestamp` string, date-time, required — UTC time at which Zernio generated this event. Retries and redeliveries keep the original value.

## Acknowledgement `200`

Webhook received successfully

---

[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/16a7b9d5373e?raw)
