Weekly CRM hygiene report for marketing ops

Every Monday morning, validate the past week's new and updated HubSpot contacts and email marketing ops a written digest of risky and undeliverable addresses.

Agentic Task
HubSpotZeroBounceGmailMarketingOperationsAI ReportsDaily DigestsEmail Automation

Build me an agent workflow that produces a weekly CRM hygiene report for the marketing ops team.

Trigger: a cron schedule that runs every Monday at 8:00am local time.

When the workflow runs, the agent should:

1. Use HubSpot Search Contacts to pull every contact whose createdate or lastmodifieddate falls in the last 7 days. Page through results until there are no more (HubSpot search caps at 10,000 total). Collect each contact's id, email, firstname, lastname, lifecyclestage, and hubspot_owner_id.

2. Deduplicate the email list and drop any contacts with no email. Send the remaining addresses through ZeroBounce Batch Validate Emails in groups of up to 200 per call. Be patient with the response: batch validate can take up to 70 seconds, so do not bail early. Page through batches until every address has been validated.

3. Group the validation results into buckets: Valid (status = valid), Catch-all (status = catch-all), Risky (status = do_not_mail with sub-status disposable, role_based, spamtrap, abuse, or toxic), and Undeliverable (status = invalid, or sub-status mailbox_not_found / does_not_accept_mail / failed_smtp_connection). Count each bucket and compute the share of the total.

4. Pick the 10 worst offenders across Risky and Undeliverable, preferring contacts that are higher up the funnel (lifecyclestage of customer or opportunity over subscriber). For each, include the contact name, email, bucket, sub-status, and HubSpot record link.

5. Call ZeroBounce Get Credit Balance and note the remaining credits.

6. Draft a written digest (plain text or simple HTML) that includes: a one-paragraph summary of deliverability impact for the week, a counts-by-bucket table with percentages, the 10 riskiest addresses with a recommended action for each (remove, suppress, re-verify, or keep), a one-sentence recommended next step per bucket, and the ZeroBounce credit balance footer.

7. Send the digest with Gmail Send a Message to marketing-ops@ (let the user override the address at setup time). Subject line should be "Weekly CRM hygiene report — week of <Monday's date>".

The workflow is read-only against HubSpot. Do not write back to contacts, do not create tasks, do not delete anything. If a step errors (HubSpot 429, ZeroBounce credit exhausted, Gmail send failure), include the error in the digest so the team knows the run was partial, and still attempt the Gmail send with whatever data was collected.

Additional information

What does this prompt do?
  • Every Monday at 8am, pulls every HubSpot contact created or updated in the past 7 days.
  • Runs the collected email addresses through ZeroBounce in batches and groups the results into valid, catch-all, risky, and undeliverable buckets.
  • Writes a plain-English digest with deliverability impact, the 10 riskiest addresses to remove or re-verify, and a recommended next step for each bucket.
  • Notes your remaining ZeroBounce credit balance at the bottom and emails the whole report to marketing-ops via Gmail.
What do I need to use this?
  • A HubSpot account with permission to read contacts.
  • A ZeroBounce account with API access and enough credits to validate a week of new contacts.
  • A Gmail account that can send to your marketing ops inbox.
How can I customize it?
  • Change the schedule to daily, biweekly, or a different day and time.
  • Swap the recipient address or add CC recipients on the marketing ops team.
  • Adjust the lookback window (7 days by default) or narrow the contact filter to a specific list, lifecycle stage, or owner.
  • Tune what counts as risky vs. undeliverable, or change how many top offenders the digest highlights.

Frequently asked questions

Will this work on HubSpot Free?
Yes. The workflow only reads contacts, which is available on every HubSpot tier including Free.
How many contacts can it validate in one run?
ZeroBounce checks up to 200 addresses per batch and the agent pages through as many batches as needed. A typical week of new contacts is well within reach, and the agent will warn you in the report if your credit balance is running low.
Does it modify my HubSpot contacts?
No. The report is read-only. It surfaces the riskiest addresses so your team can decide what to remove or re-verify, but nothing is changed in HubSpot automatically.
Can I send the report somewhere other than email?
Yes. You can change the delivery step to post the digest in Slack, drop it into a Google Doc, or add it to a Notion page instead of, or in addition to, the Gmail send.
What if the agent runs out of ZeroBounce credits mid-run?
The agent checks your remaining credit balance and includes it in the report. If a run is interrupted by an empty balance, the digest will call that out so you can top up before the next Monday.

Stop letting bad emails quietly burn your sender reputation.

Connect HubSpot, ZeroBounce, and Gmail once, and Geni delivers a clean weekly hygiene report to marketing ops every Monday morning.