廣告投放
賣光了就停掉還在賣它的廣告
晚上九點存貨歸零。帶著那件商品的廣告組繼續花錢,直到第二朝有人打開帳戶為止。做法不算聰明,但一定要有兩半:事件負責快,排程負責接住那些從來沒有送到的事件。至於要停哪幾組廣告,那是一條關於你自己命名方式的問題,不先答好,上面兩半都用不著。
- 觸發
- 兩個
- 執行頻率
- 每 15 分鐘
- 工具
- 5 件
- 需要 durable execution
- 不需要
流程
上面那條對存貨歸零作出反應,並記下它動過什麼。下面那條定時重查,而漏收的 webhook 只有它接得住。
存貨歸零
Shopify Admin API
找出相關廣告組
n8n · Make
存放貨號對廣告組的對照
Sheets · Airtable
每 15 分鐘
n8n 排程
讀取存貨與廣告狀態
Shopify Admin API · Meta Marketing API
零存貨而廣告仍在跑?
n8n IF
把廣告組設為暫停
Meta Marketing API · Google Ads API
維持運行
—
逐步拆解
- 01
存貨歸零
Shopify Admin API庫存 webhook 觸發。把它當成「去看一眼」的提示,不要當成庫存數字本身——真正用來做判斷的數,應該是你自己讀回來那個。
- 02
找出相關廣告組
n8n · Make由一個貨號,推出仍然帶著它的廣告組同廣告群組清單。如果廣告名稱裡面沒有貨號,這一步會靜靜地失敗;所以那份對應關係要寫下來,不要靠推測。
- 03
存放貨號對廣告組的對照
Sheets · Airtable一個貨號一行,列明它出現在哪些廣告組,由人維護。靠廣告名稱即時猜出來的對應,第一次有人改名就會斷。
- 04
每 15 分鐘
n8n 排程無論有沒有收到 webhook 都會跑。晚上九點那一次送不到,就靠這一半接住;漏了的代價,就是一整晚的花費。
- 05
讀取存貨與廣告狀態
Shopify Admin API · Meta Marketing API取回對照表上各貨號的即時存貨,以及每個廣告組現時的狀態。兩邊都讀,下一步才算是判斷,而不是估。
- 06
零存貨而廣告仍在跑?
n8n IF兩個條件要同時成立。已經停了的廣告組不用再處理,重複停一次也是一次要付出的操作額度。
- 07
把廣告組設為暫停
Meta Marketing API · Google Ads API停在廣告組或廣告群組那一層,不要停整個廣告系列——系列裡面通常還有其他仍然有貨的商品。停了哪些,要貼到日後要負責開返的那個頻道。
平台不容許的事
頭兩項決定了這個流程的形狀。第三項則解釋了「已經停了」為何比想像中難確認。
Shopify 寫明「webhook delivery isn't always guaranteed」,亦「doesn't guarantee ordering within a topic, or across different topics for the same resource」。它自己給的補救,正是這裡下面那一條:「For redundancy, use reconciliation jobs to periodically fetch data from Shopify so that your app stays consistent with Shopify's data.」
Shopify — About webhooks (best practices)Shopify 給的是「a one-second connection timeout and a five-second timeout for the entire request」,之後會「retries 8 times over the next 4 hours」。連續八次失敗之後,經 Admin API 設定的訂閱會被自動刪除——端點在長假期停了幾日,回來時可能連訂閱都沒有了。
Shopify — Deliver webhooks through HTTPS在 Meta,status 是「the status set at the ad set level」;而 effective_status「could be effective either because of its own status, or the status of its parent campaign」,會回傳 CAMPAIGN_PAUSED 這類值。查你自己寫入的那個欄位,只知道你要求了什麼;查 effective_status,才知道廣告實際上有沒有停。
Meta Marketing API — Ad Set reference每一次暫停都計數。Google Ads 的 Basic access 每日 15,000 次操作,計法是「the total sum of get requests and mutate operations」,而且「requests that are rejected with a GoogleAdsFailure still count against the user's daily operation quota」——把已經停了的再停一次,等於白白燒掉額度。
Google Ads API — API limits and quotas
什麼情況不值得做
以下三種情況,維護成本會高於一晚的白花。
你接受缺貨預訂。那樣「零」不是停止訊號,只是一個交貨日期;停掉廣告,等於把一單本來做得成的生意變成零。
廣告組不是按商品編排。如果一個廣告組帶著四十個貨號,因為其中一個賣光就停掉它,代價高過那些白花的點擊,而這個取捨不是自動化替你做得了的。
沒有人負責開返。只會停、不會開的自動化,會令帳戶一個星期一個星期地縮水;到有貨那日,廣告仍然是黑的,因為沒有人被通知過。