Amplitude
Renta sends rows from your data warehouse to Amplitude as one of two objects: events and user profiles.
An event row carries the person's User ID, the event name, and any columns you route into event properties or user properties. A user-profile row carries the User ID and the properties written onto that person's Amplitude profile.
Authentication
Renta authenticates with an Amplitude project API key. A key works with a single project, so create a separate destination for every Amplitude project you sync into.
Connecting the destination takes two values from Amplitude:
- In Amplitude, open Settings > Projects, select the project, and open the API Keys tab. Copy the API key.
- Note the data region of the project, US or EU. Amplitude runs the two regions as separate installations, and a key belongs to only one of them.
A key issued for the US project does not work against the EU project, and Amplitude reports the mismatch with the same message it uses for a malformed key. If Renta reports that the key was rejected, check the region before checking the key.
Renta checks the key when you save the destination. The check writes nothing, so connecting a destination leaves no trace in your Amplitude project.
Connect Amplitude destination
Follow these steps to add Amplitude as a Reverse ETL destination in Renta.
- Navigate to the Connections > Catalog section in the left sidebar and open the Destinations tab.
- Open the Analytics category and click the Amplitude card.

Fill in the connection credentials:
- API key.
Paste the project API key you copied from Amplitude. - Data region.
Select US or EU to match the project the key belongs to.

Finish the setup:
- Destination name.
Specify a name for this destination. This is used exclusively in the Renta interface.
Click Save to finish. A key that Amplitude rejects is not saved.

The new destination appears in the Destinations list with the Active status. You can now use it in Reverse ETL pipelines.

Create a pipeline
Once the destination is connected, create a pipeline to send a data model to Amplitude.
A Reverse ETL pipeline reads from a data model: a SQL query saved in the Data models section that defines which warehouse data to sync. Create the data model before setting up the pipeline.
Create an Amplitude pipeline
Link your data warehouse to Amplitude and configure the pipeline.
In the left sidebar, click New pipeline. On the Source step, switch the toggle to Reverse ETL and pick your data warehouse, such as Google BigQuery.

Choose the warehouse connection that holds your data models and click Next step.

On the Destination step, select Amplitude under Already connected and click Next step.

Choose the Amplitude connection you created earlier and click Next step. Each card shows the region and the last four characters of the API key, which is how you tell two Amplitude projects apart.

Pipeline configuration
On the final step, choose what Renta writes to Amplitude and which columns fill it.
What Renta sends
Pick the Amplitude object and the data model behind it.

- What would you like Renta to send to Amplitude.
Choose the kind of data this pipeline writes. - Data model.
Choose the data model to sync. The columns available for mapping below come from this model.
| Object | Description |
|---|---|
| Event | Each row becomes an Amplitude event that you name yourself. Use this for funnels, retention, and anything that measures time between steps. An event can also carry user properties, so it updates the profile at the same time. |
| User profile | Each row updates user properties on the person's Amplitude profile without creating an event, so you can segment people by warehouse data such as CRM status or plan. Nothing counts towards your Amplitude event volume. |
A profile update reaches charts only from that person's next event onwards. If you need the new values straight away, choose Event instead and map the same columns as user properties.
Field mapping
Connect the columns of your data model to Amplitude's built-in event fields.

- Mapping rows.
Pick a warehouse column on the left and the Amplitude field it fills on the right. Required rows are created for you and cannot be removed. - Add mapping.
Add a row for each further field you want to fill.
| Mapping type | Description |
|---|---|
| Standard | Takes the value from a data model column. |
| Static | Sends the same fixed value in every row. |
| Variable | Sends a value from the sync itself, such as the data model name or the time the run started. |
The dropdown on the right offers Amplitude's built-in fields, listed here by kind.
| Group | Fields |
|---|---|
| Identity | User ID |
| Event | Event name, Event time (ms since epoch), Insert ID (deduplication), Session ID |
| Revenue | Price, Quantity, Revenue, Product ID, Revenue type |
| Device and app | App version, Platform, OS name, OS version, Device brand, Device manufacturer, Device model, Carrier |
| Location | Country, Region (geo), City, DMA, Language, IP address, Latitude, Longitude |
Two of them are mandatory:
User IDis required for both objects.
It has to come from a column, because a fixed value would write every row of the sync onto a single Amplitude profile, and Amplitude cannot re-map or split a user ID afterwards.Event nameis required when the object is Event.
Map a column that holds the name, or assign it a Static value to send one constant name for the whole sync. The names$identifyand$groupidentifyare reserved by Amplitude, as is anything starting with[Amplitude]. Renta never substitutes a name of its own, so an event always arrives under the one you set.
A User profile pipeline has no Event name field. Amplitude accepts a profile update only under its own reserved event name, and that name cannot be replaced.
Event time reads a timestamp or date column, a number holding epoch seconds or milliseconds, and a text column holding a timestamp such as 2026-07-31T12:00:00Z. A value Renta cannot read is left out of the event, and Amplitude then stamps it with the time it arrived. Leave Event time unmapped if that is the behaviour you want.
Insert ID is Amplitude's deduplication key and rarely needs mapping. When you leave it empty, Renta builds the key from the content of the row, and that is what makes a repeated run safe.
Event and user properties
Amplitude accepts arbitrary property names, so these two blocks work differently from the block above: you type the property name instead of picking it from a list.

- Event properties.
Attributes of the event itself, such as the plan or the amount. Pick the column on the left and type the property name Amplitude should store it under. - User properties.
Attributes stored on the person's Amplitude profile, such as the CRM status. On an Event pipeline they travel with the event, so they are queryable in charts straight away.
An Event pipeline offers both blocks. A User profile pipeline offers only user properties, and at least one of them is required: without a property there is nothing to write to the profile.
An empty cell is skipped rather than sent as an empty value, so Amplitude keeps whatever the profile already holds. This also applies to empty arrays and empty objects, which is what a warehouse returns for a repeated column with no entries. To clear a property in Amplitude, do it in Amplitude.
Sync behavior
Set what happens to deleted rows and name the pipeline.

- When a source row is deleted.
Ignore is the only available option. Amplitude ingest is append-only, so an event that has already been sent cannot be retracted. - Integration name.
This is the name of your pipeline. Edit it to match your preferences.
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 Reverse ETL tab, where you can track its runs and progress.

Sync strategy
Renta syncs incrementally. Each run compares the data model against the state recorded by the previous run and sends only the rows that are new or changed. The first run therefore delivers the whole model.
| Row state | What Renta does |
|---|---|
| New | Delivers the row to Amplitude as an event or a profile update. |
| Changed | Delivers the row again with the new values. The earlier event stays in Amplitude, and the profile ends up holding the latest values. |
| Unchanged | Sends nothing, so unchanged rows cost no Amplitude event volume. |
| Deleted | Ignored. Amplitude ingest accepts only new events, so a delivered event cannot be withdrawn. |
Every event carries a deduplication key that Renta derives from the content of the row, unless you mapped Insert ID yourself. Identical content produces an identical key, so a delivery that Renta repeats after a network failure does not become a second event in Amplitude. Changed content produces a new key, so the update always lands.
Amplitude applies deduplication within a 7-day window. A row that is re-delivered unchanged after that window lands as a new event.
Run log
To see what a run sent, open the pipeline, click the run in the Runs table, and expand an entry under Run actions. An Amplitude pipeline records an amplitude_partition_delivered action for each batch it delivered, carrying Amplitude's answer for that batch.
| Variable | Meaning |
|---|---|
| amp_object_type | Events or user profiles. |
| amp_op_type | Whether the rows were new or changed. |
| amp_events_ingested_total | Events Amplitude accepted from this batch. |
| amp_rejection_count | Rows that did not reach Amplitude. |
| amp_status_codes | Response status of each request. A single 200 is the ordinary case. |
The remaining variables describe how the batch was split into requests and where it sat among the run's rows.
amp_events_ingested_total counts what Amplitude accepted, not what it kept. Deduplication happens afterwards on Amplitude's side.
The monitoring documentation covers the rest of the run details.
Limits
- Rows Renta refuses to send.
Renta drops a row whoseUser IDis empty, shorter than five characters, or set to a placeholder Amplitude refuses, such asnull,noneor0. The rest of the batch still goes through, and the run log reports how many rows were dropped. - Runs that stop early.
A run halts when rejections pass 30% of a single batch or 10% of the run as a whole. This catches a mismapped identity column before it fills Amplitude with unattributable rows. The pipeline resumes from where it stopped on the next run. - A key Amplitude refuses.
If the API key stops working mid-sync, for instance because it was rotated in Amplitude, the run stops at the first refused request instead of sending the rest of the data to a key that cannot accept it. Update the key on the destination, and the next run resumes from where this one stopped. - Value length.
Amplitude truncates text values longer than 1024 characters. Renta sends the value as it stands in the warehouse rather than shortening it for you. - Device ID.
The field is not offered. Amplitude permanently merges any two people that share a device ID, so a repeated or recycled warehouse value would collapse unrelated profiles into one. Amplitude derives the device fromUser IDinstead.
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.