跳至主要內容

廣告投放

把昨日花費併成一張表

三個廣告平台,三個分頁,三種對「昨日」的定義。每朝要人手併一次,併好之後又沒有人夠信心用它來做決定。取數本身是容易的一半。決定這張表值不值得存在的,是平台改動了你已經寫落去的數字之後,你怎樣處理。

觸發
兩個
執行頻率
每日兩次
工具
5 件
需要 durable execution
不需要

流程

上面那條負責取數同寫入,下面那條在同一日稍後重讀同樣的日期,因為第一次讀到的數並非最終數。

編排

每朝一早

n8n 排程

平台

讀取昨日花費

Meta Marketing API · Google Ads API

資料

每個帳戶寫一行

Sheets · Airtable

編排

下午再跑一次

n8n 排程

平台

重讀最近幾日

Meta Marketing API · Google Ads API

編排

數字有改動?

n8n IF

通知

改正該行,並且講出來

Slack · WhatsApp

編排

維持原行

逐步拆解

  1. 01

    每朝一早

    n8n 排程

    跑一次,時間要等所有平台按各自時區收完一日。這個時間要白紙黑字定一次,否則這張表每星期的意思都會悄悄變過。

  2. 02

    讀取昨日花費

    Meta Marketing API · Google Ads API

    每個平台一次請求,用同一段日期。幣值同帳戶按 API 回傳原樣記低——換算過而沒有記低匯率的數字,日後查不到源頭。

  3. 03

    每個帳戶寫一行

    Sheets · Airtable

    平台、帳戶、日期、花費,以及讀取的時間戳。三個星期之後,靠這個時間戳才分得出哪些是平台改過的數,哪些是有人打錯。

  4. 04

    下午再跑一次

    n8n 排程

    第二輪。它存在的原因是平台會持續修訂近幾日的數字;只跑早上那次,等於把一個從未定案的數字凍結了。

  5. 05

    重讀最近幾日

    Meta Marketing API · Google Ads API

    同一條查詢,但取一段短的往回窗口,而不是單一日期。取回之後,跟表上已有的那幾日比對。

  6. 06

    數字有改動?

    n8n IF

    門檻用金額定,不要用百分比。小帳戶改幾毫是雜訊;同樣的百分比落在最大那個帳戶身上就不是。

  7. 07

    改正該行,並且講出來

    Slack · WhatsApp

    覆寫數字,把舊數留在旁邊,兩個一齊出。一個靜靜改過的數字,比三個分頁更差,因為已經有人引用過它。

平台不容許的事

第二輪不是謹慎。它存在,是因為兩個平台的文件都寫明:剛回報的數字仍然會動。

  • Meta 對 Insights 的說明是:「Insights refresh every 15 minutes and do not change after 28 days of being reported.」早上七點讀到的花費,是一次讀數,不是結算。

    Meta Marketing API — Insights best practices
  • 數據量大的話,Meta 叫你行非同步那條路——「Async to query for large volume of data to avoid timeouts」——並且警告「/GET or synchronous requests can return out-of-memory or timeout errors」。那個工作編號亦不是長期鎖匙:「Do not store the report_run_id for long term use, it expires after 30 days.」

    Meta Marketing API — Insights best practices
  • Meta 的 Insights 上限按廣告帳戶計算,不是一個固定額度;standard access 之下是「Calls within one hour = 600 + 400 * Number of Active ads - 0.001 * User Errors」。X-Business-Use-Case-Usage 這個 header 會回傳 call_count 同 estimated_time_to_regain_access,流程可以據此退讓,而不是硬撞。

    Meta Graph API — Rate limiting
  • Google Ads 計的是每日操作次數:Basic access 每日 15,000 次,而「API operations are the total sum of get requests and mutate operations」。整份報表本身很便宜——「One SearchStream request counts as one API operation irrespective of the number of batches」——但出錯不會免費:「Requests that are rejected with a GoogleAdsFailure still count against the user's daily operation quota.」

    Google Ads API — API limits and quotas

什麼情況不值得做

以下三種情況,維護成本會高於每朝換分頁的代價。

  • 沒有人會因為這個每日數字而做決定。如果那張表反正到月尾才有人看,平台自己的匯出已經做到同樣的事,多做一個流程只是多一件會壞的東西。

  • 花費集中在單一平台。那樣「跨平台比較」根本不是重點,你在建一張只有一行有意義、另外兩行是零頭的表。

  • 「一日」的定義未有共識。時區、帳戶幣值、平台的數字有沒有計手續費,這些要先由人拍板。把一場爭論自動化,只會更快地產出一張人人都不信的表。

延伸閱讀

聯絡我們

這些流程,你真正應該做哪一條?

我們每星期都在為香港的營運團隊跑這些流程。告訴我們哪個環節正在耗你的時間,我們會告訴你自動化划不划得來。

開始對談