Mailchimp
Renta exports eight Mailchimp objects to your data warehouse: audiences, audience members, campaigns, campaign reports, email activity, unsubscribes, segments, and tags.
A member row holds the contact's subscription status, merge fields, and tags. A campaign report row holds the totals of one sent campaign: opens, clicks, bounces, and unsubscribes. Email activity breaks those totals down to single actions, one row for each open, click, or bounce of a recipient.
Authentication
Renta connects to Mailchimp with OAuth. You log in to your Mailchimp account and allow access, and Renta reads every audience and campaign of that account.
Mailchimp grants access to the account as a whole, so its consent screen mentions both reading and changing data. A Mailchimp source only reads.
Mailchimp access does not expire. The connection works until you revoke the access in your Mailchimp account.
Connect Mailchimp source
- Navigate to the Connections > Catalog section in the left sidebar.
- Open the Email marketing category and click the Mailchimp card marked Source. The Mailchimp card marked Destination belongs to Reverse ETL and writes data into Mailchimp instead of loading it into a warehouse.

Click Log in to your Mailchimp account. Mailchimp opens in the same tab.

Log in with the account whose data you want to export. If Mailchimp asks for a verification code, enter it.

On the Authorize Renta screen, click Allow. Mailchimp returns you to Renta.

Renta confirms the granted access. Finish the setup:
- Source name.
Renta fills it with the name of your Mailchimp account. Change it to any name you like. The name is used only in the Renta interface.
Click Save to finish.

The new source appears in the Sources list with the Active status. You can now use it in pipelines.

Create a Mailchimp pipeline
Create this pipeline once your Mailchimp source is connected.
In the left sidebar, click New pipeline. On the Source step, select Mailchimp under Already connected and click Next step.

Choose the Mailchimp connection you created earlier and click Next step.

On the Destination step, select your destination, such as Google BigQuery, and click Next step.

Choose the destination connection you want to load data into and click Next step.

Pipeline configuration
On the final step, choose the report, pick its fields, and set the schedule.
Report type
In the Report Types dropdown, choose which Mailchimp object the pipeline exports. One pipeline loads one report type, so create a separate pipeline for each object you need.

| Report type | Description |
|---|---|
| Audiences | Your Mailchimp audiences with their settings and subscriber counts. |
| Audience members | Contacts of every audience with their status, merge fields, and tags. Archived contacts are included. |
| Campaigns | Email campaigns in any status with their settings and recipients. |
| Campaign reports | Results of sent campaigns: opens, clicks, bounces, and unsubscribes. |
| Email activity | Opens, clicks, and bounces of each recipient of your sent campaigns. One row is one action. |
| Unsubscribes | Contacts who unsubscribed from a campaign, with the reason they gave. |
| Segments | Segments of every audience with their conditions and contact counts. |
| Tags | Tags of every audience. |
A pipeline always covers the whole account. Audience members, Segments, and Tags load every audience, and the List ID parameter shows which audience a row belongs to. Email activity and Unsubscribes load every sent campaign, and Campaign ID links a row to its campaign.
Mailchimp stores tags as static segments, so your tags also appear in the Segments report.
Parameters
Check the Mailchimp fields to load into the destination table. Each field shows the name of its future column.

In Audience members, the fields List Member ID and Last Changed are checked and locked. In Email activity, the same applies to Activity ID and Timestamp. Renta updates the destination table by these fields.
Some fields hold more than one value:
- Merge fields.
Merge Fieldsloads as JSON, because each audience defines its own set of merge fields. The same applies toInterests. - Tags.
TagsinAudience membersloads as a list of records with the tag identifier and name. - Segment conditions.
Options ConditionsinSegmentsloads as JSON.
A date that is not set in Mailchimp, such as the send time of a draft campaign, loads as an empty value.
Table name
Name the pipeline and the destination table.

- Integration name.
The name of the pipeline. It is used only in the Renta interface. - Table name.
The destination table name. You can keep the auto-generated name or enter your own.
Schedule
Choose how often the pipeline runs.

| Schedule type | Description |
|---|---|
| Manual | The pipeline runs only when triggered manually through the interface or via API. |
| Daily | The pipeline runs once a day at the specified update time. |
| Interval | The pipeline runs at specified time intervals. |
| Cron Expression | The pipeline runs on a schedule defined by a cron expression. |
For Daily schedules, set the Update time (the exact time each run starts), then click Create pipeline.

Renta also supports API triggers and integration with external orchestrators such as Apache Airflow, Dagster, and Prefect. See the full scheduling documentation for details.
The new pipeline appears in the Pipelines section under the ETL tab, where you can track its runs, progress, and the destination table name.

Sync strategy
The table below describes how Renta synchronizes each Mailchimp report type.
| Strategy | Supported report types | Description |
|---|---|---|
| Incremental (merge) | Audience members, Email activity | The first run loads everything. Each next run fetches only the contacts changed, or the actions recorded, since the previous run. Members are upserted by List Member ID, with Last Changed deciding which version of a row is newer. Actions are upserted by Activity ID, and the table is partitioned by the day of the action. |
| Full reload | Audiences, Campaigns, Campaign reports, Unsubscribes, Segments, Tags | Renta reads the object in full on every run and replaces the contents of the destination table. Tables are partitioned by the day the record was created: the audience, campaign, or segment creation day, the campaign send day, or the day of the unsubscribe. The Tags table is not partitioned. |
Incremental sync works when the destination is Google BigQuery or ClickHouse. With other destinations, Audience members and Email activity are fully reloaded on every run.
Changing the selected parameters of an incremental pipeline makes the next run load everything again.
Limitations
- The whole account, no date range.
A pipeline has no audience, campaign, or date filter. Every run covers all audiences or all sent campaigns of the account. - Run time grows with the account.
Email activityandUnsubscribesare read campaign by campaign, andAudience membersaudience by audience. The first run of an account with many sent campaigns takes noticeably longer than the following ones. - Permanently deleted contacts stay in an incremental table.
An incremental run adds and updates rows and does not remove them. A contact you archive in Mailchimp changes itsStatustoarchived. A contact you delete permanently keeps its last loaded row until you run the pipeline with Full refresh.
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.