We are trying to export marketing email events (sends, opens, clicks, unsubs) to our database on daily basis for reporting purposes. But using the event exports with the private app integration, we are exceeding the 1M/day call limit. This seems odd since the volume of email sends and activity on our account is not that high. Is there a way to customize the export to only include the data that we need to send? For example, we don’t need to send every time a contact opens an email, but just a summary of the activity that day.
You cannot natively customize the event export endpoint to return summary data (like “3 opens and 2 clicks for Email ID X on Contact Y”) — but you can summarize intelligently in your own pipeline with fewer API calls by switching tactics.
Instead of:
GET /marketing/v3/email/public/events
which returns one row per interaction…
Try to:
Filter by event type (e.g., just “SENT”, “DELIVERED”, “UNSUB”)
Increase your time window to batch requests (e.g., pull 1-day chunks, not 5-minute slices)
Paginate using after cursor smartly to reduce re-fetching
Also consider:
GET /marketing/v3/email/public/events?eventType=OPEN&limit=1000
But again — this still gives you raw events.
You could also build a daily job that:
Pulls only events that occurred since your last run
Deduplicates opens and clicks on your end (e.g., group by email ID + contact ID)
Writes a summary row per contact/email/day to your DB like:
contact_id
email_id
date
opens
clicks
unsubscribed
123
345
2025-07-03
2
1
FALSE
This allows you to reduce total API usage significantly. If you’re just sending summary records to your DB, this is best practice.
Let me know if this helps, or if you have any other questions!
Was I able to help answer your question? Help the community by marking it as a solution.