Daily
Get a daily list of Iterable unsubscribes and bounces
Each morning you get the users who opted out or bounced the day before, in one list.
- Runs
- Daily
- Apps
- Iterable
- AI
- Not needed
- Access
- server-side key (read)
Send this to your assistant
Create a ClickRuntime automation: every day at 7am, email me a list of users who unsubscribed or had an email bounce in Iterable yesterday, with their email and the event type.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A lifecycle marketer sends to a list of 80,000 addresses in Iterable. After a big send, some people unsubscribe and others bounce, and both groups need to be handled: unsubscribes must be kept out of other systems such as the CRM and ad audiences, and hard bounces damage sender reputation if they stay on a list. Iterable handles its own suppression, but nothing tells the rest of the stack, so the sales team keeps emailing people who opted out last week.
Each day, ClickRuntime exports the emailUnSubscribe and emailBounce events from Iterable for the previous day and emails you the list of addresses with the event type and time. You have a plain daily record of who left and who could not be reached.
It is aimed at marketing operations and lifecycle teams that keep audiences in more than one system.
What you get out of it
Opt-outs are respected everywhere
Someone who unsubscribes from marketing email in Iterable should not hear from sales or appear in a retargeting audience. A daily list gives you what you need to update those other tools promptly.
Compliance risk goes down
Rules such as CAN-SPAM and GDPR expect opt-outs to be honored quickly. A dated record of unsubscribes, delivered every day, shows that you had a routine for acting on them and when it ran.
Bounce problems are caught early
A sudden jump in bounces after a send usually means a bad list or a data problem. Seeing the daily count and the addresses lets you investigate the same week, before mailbox providers lower your reputation.
Cleaner lists save money
Email platforms often charge by contact or by send volume. Removing addresses that bounce or opted out reduces what you pay and improves engagement rates because you are sending only to reachable, willing people.
A paper trail for support questions
When someone says they never opted out, or insists they did, the daily exports show the date of the event. Support can answer with evidence instead of guessing. That keeps a disagreement with a subscriber short and factual.
How it works
What happens, step by step
Once a day, ClickRuntime asks Iterable for everyone who unsubscribed or whose email bounced yesterday.
It puts them into one list, with each email address marked as unsubscribed or bounced.
You get the list by email in a format you can paste into a spreadsheet. If there were none, the email says so.
Before it runs live
- Connect Iterable
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Iterable steps into one automation
Under the hood
The code that runs this automation
import json
from clickruntime import on_trigger, credentials, notify, http
TYPES = {"emailUnSubscribe": "unsubscribed", "emailBounce": "bounced"}
@on_trigger
def run(event):
headers = {"Api-Key": credentials.secret("ITERABLE_API_KEY")}
lines = []
for data_type, label in TYPES.items():
resp = http.get("https://api.iterable.com/api/export/data.json", headers=headers,
params={"dataTypeName": data_type, "range": "Yesterday", "onlyFields": "email"})
resp.raise_for_status()
lines += [f"{json.loads(row)['email']},{label}" for row in resp.text.splitlines() if row.strip()]
notify.email_me(f"Iterable: {len(lines)} unsubscribes and bounces yesterday",
"email,event\n" + "\n".join(lines) if lines else "None yesterday.")
return {"rows": len(lines)}FAQ
Common questions
Should unsubscribes and bounces be handled the same way?
Does the export include the reason for a bounce?
Can I limit the export to one project or campaign?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get last week's Iterable campaign results by email
Each Monday you see sends, opens, clicks and unsubscribes for every campaign that ran the week before.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksPost a morning briefing to Slack
Your team starts the day with the weather, a reminder or anything else you'd like in #general.
See how it worksKeep exploring
Set up “Get a daily list of Iterable unsubscribes and bounces” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
