隨著社群媒體觸及率越來越低,有不少的公司和自媒體創作者,都會透過電子報來和用戶保持長期聯繫,但在訂閱人數成長的同時,養名單的成本也就會隨之增加,這時候,冷名單的管理就非常重要。
市面上的電子報平台都是按照訂閱者數量來計費,不開信的冷名單就會佔用額度,白白浪費訂閱費,並且會拉低開信率,導致信件有很高的機率會被Gmail歸類為垃圾信,雖然電子報平台都有提供自動化的機制,但都是付費的進階功能。
這篇文章就用Kit(原ConvertKit)電子報平台為例,教你利用n8n串接Kit API,建置電子報冷名單清理自動化,定期篩選電子報冷名單,發送喚回郵件(re-engagement email),並且取消訂閱沒回應的訂閱者,提升電子報名單的品質與開信率。
一、電子報冷名單自動化清理的運作流程
使用n8n串接Kit API打造冷名單清理自動化,整體流程分成5個步驟:
- 定期排程
- 撈取冷名單訂閱者資料
- 區分「喚回訂閱者」與「取消訂閱者」
- 如果是「喚回訂閱者」,就標記為「喚回訂閱者」,並且發送喚回郵件(re-engagement email)
- 如果是「取消訂閱者」,代表之前已經被標記為喚回訂閱者,又沒有開啟或點擊喚回郵件,則將該名單取消訂閱
二、n8n串接Kit API打造電子報冷名單清理自動化的解決方案
利用Schedule Trigger,定期排程每個月1日觸發執行冷名單清理自動化流程,接著,呼叫Kit API撈取三個月內沒有開啟或點擊電子報的冷名單訂閱者,然後用Code區分「喚回訂閱者」與「取消訂閱者」。
如果是「喚回訂閱者」,就利用n8n的Split Out節點切分每筆資料,然後逐筆呼叫Kit API標記為「喚回訂閱者」,最後批次發送喚回郵件。
而如果是「取消訂閱者」,同樣切分每筆資料之後,呼叫Kit API取消訂閱。
三、n8n串接Kit API打造電子報冷名單清理自動化的實作步驟
1.設定Schedule Trigger:定時排程執行
利用n8n的Schedule Trigger,定期每個月1號執行電子報冷名單清理自動化流程。
2.設定HTTP Request:篩選Kit電子報冷名單訂閱者
透過Kit API篩選90天前加入訂閱,並且沒有開信與點擊的冷名單。
JSON內容如下:
{ "all": [ { "type": "subscriber_state", "states": ["active"] }, { "type": "opens", "count_less_than_or_equal": 0, "after": "{{ $now.minus({days: 90}).toFormat('yyyy-MM-dd') }}", "before": "{{ $now.toFormat('yyyy-MM-dd') }}" }, { "type": "clicks", "count_less_than_or_equal": 0, "after": "{{ $now.minus({days: 90}).toFormat('yyyy-MM-dd') }}", "before": "{{ $now.toFormat('yyyy-MM-dd') }}" }, { "type": "subscribed", "before": "{{ $now.minus({days: 90}).toFormat('yyyy-MM-dd') }}" } ], "include": [ { "type": "stats", "range": { "start": "{{ $now.minus({days: 90}).toFormat('yyyy-MM-dd') }}", "end": "{{ $now.toFormat('yyyy-MM-dd') }}" } }, { "type": "tags" } ] }
在Options的部分,Kit API提供名單分頁的功能,在每次發送請求查詢的時候,會需要更新pagination的end_cursor屬性值,除此之外,也可以依需求設定回傳的「最多頁數(Max Page)」、「請求的間隔時間(Interval Between Requests)」,如下:
3.設定Code節點:區分「喚回訂閱者」與「取消訂閱者」
接下來,用n8n的Code節點,判斷Kit API回傳的電子報冷名單,如果沒有喚回訂閱者標籤,就加入為「喚回訂閱者」,反之,已經有喚回訂閱者標籤的人,代表上次已經發送過喚回郵件,但依然沒有開信或點擊,所以就加入為「取消訂閱者」,程式碼如下:
const REACTIVATION_TAG_ID = 22849016; // Kit喚回訂閱者標籤ID const toTag = []; const toUnsubscribe = []; let totalSubscribers = 0; for (const item of $input.all()) { const subscribers = item.json.subscribers || []; totalSubscribers += subscribers.length; // 每筆 item 是一個 subscriber for (const sub of subscribers) { const tags = sub.tags || []; const hasTag = tags.some(t => t.id === REACTIVATION_TAG_ID); if (hasTag) { // 上次已標記且發信,這次仍是冷名單 → 取消訂閱 toUnsubscribe.push({ id: sub.id, email_address: sub.email_address }); } else { // 第一次出現在冷名單 → 貼標並發送喚回信 toTag.push({ tag_id: REACTIVATION_TAG_ID, subscriber_id: sub.id }); } } } // 回傳結果 return [{ json: { toTag, //喚回訂閱者陣列 toUnsubscribe, //取消訂閱者陣列 totalSubscribers, //冷名單人數 totalTag: toTag.length, //喚回訂閱者人數 totalUnsubscribe: toUnsubscribe.length //取消訂閱者人數 } }];
4.喚回流程:設定Split Out節點(切分「喚回訂閱者」)
將toTag(喚回訂閱者)陣列,透過Split Out節點切分為獨立的資料。
5.喚回流程:設定Loop Over Items節點(重複逐筆執行)
重複逐筆執行切分好的toTag(喚回訂閱者)資料。
6.喚回流程:設定HTTP Request節點(Kit標記訂閱者)
透過Kit API將喚回訂閱者標記為「喚回訂閱者」標籤。
7.喚回流程:設定Aggregate節點(合併資料)
當所有「喚回訂閱者」都標記完成,就把所有資料合併成一個清單。
8.喚回流程:設定HTTP Request節點(寄送喚回郵件)
利用Kit API批次寄送喚回郵件給喚回訂閱者。
其中,JSON內容如下:
{{ JSON.stringify({ subject: "好久不見,你還在嗎?", preview_text: "點擊確認你還想收到我們的電子報", content: "<p>嗨,好久不見!</p><p>點擊這裡讓我知道你還在 👉 <a href='https://learncodewithmike.com'>我還在!</a></p><p>如果沒有回應,我們將在下次清理時將你從名單中移除。</p>", public: true, send_at: $now.toISO(), subscriber_filter: [ { all: [ { type: "tag", ids: [22849016] } ] } ] }) }}
9.取消訂閱流程:設定Split Out(切分「取消訂閱者」)
同樣將toUnsubscribe(取消訂閱者)陣列,透過Split Out節點切分為獨立的資料,設定如下:
10.取消訂閱流程:設定HTTP Request節點(取消訂閱)
呼叫Kit API把取消訂閱者名單進行取消訂閱。
四、成果總結
有了這套電子報冷名單清理自動化流程,定期執行冷名單喚回與取消訂閱,不僅能有效降低訂閱費用,更能大幅提升名單品質,將內容精準推播給真正感興趣的讀者。
除此之外,隨著開信率的提升,還能建立網域在Gmail等郵件服務商的可信度,進一步提高郵件的到達率(Delivery Rate)。如果你也有在經營電子報,但開信率不理想或冷名單非常多,這套n8n電子報冷名單清理自動化正是你需要的解決方案。
💡 在導入流程自動化時遇到了什麼問題?還是有什麼應用想嘗試、想看的文章主題?歡迎填寫許願表單,你的回饋會直接影響下一篇教學的方向。填寫許願表單 →
🔗 如果這篇文章對你有幫助,歡迎把它分享給也在研究自動化的朋友。能幫到更多人少走一點彎路,是我寫這些內容最大的動力。





留言
張貼留言