Intercom
Renta sends rows from your data warehouse to Intercom as one of three objects: contacts, companies, and data events.
A contact row carries the person's identifiers and the attributes on their profile. A company row carries the account and its attributes. An event row records something the person did, so it lands on their timeline and can trigger a message.
Authentication
Renta authenticates with Intercom OAuth. The authorization covers one workspace and its data host region, which Intercom picks up from the account you are signed in to.
On the consent screen Intercom lists what the app may reach: people, companies, conversations, messages, teams, tags, people activity, workspace counts, data attributes, tickets, and AI content. Renta reads the data attributes to fill the mapping dropdowns, looks contacts up before writing, and creates or updates the records a pipeline delivers.
Your credentials are encrypted. Revoke the authorization at any time from the authorized apps list in your Intercom account.
Connect Intercom destination
- Navigate to the Connections > Catalog section in the left sidebar and open the Destinations tab.
- Open the Reverse ETL category and click the Intercom card.

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

Review the permissions and click Authorize access. Check the Data host region at the bottom of the screen, because it decides which Intercom installation the pipeline writes to. Intercom returns you to Renta.

Renta confirms the granted access and shows the authorized account. Finish the setup:
- Destination name.
Specify a name for this destination. This is used exclusively in the Renta interface.
Click Save to finish.

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

Prepare a data model
A Reverse ETL pipeline reads from a data model: a SQL query saved in the Data models section that decides which warehouse rows to sync and what each row holds. Build it before the pipeline, because the mapping dropdowns are filled from its columns.
Name the columns after the Intercom fields you plan to fill. The mapper then pairs them up one to one, and the pipeline is quicker to read later.
-- Contacts prepared for Intercom. The query returns rows only, no table is created.
WITH demo_contacts AS (
SELECT
'james.miller@example.com' AS email,
'u-1001' AS external_id,
'James Miller' AS name,
'+12125550101' AS phone,
'pro' AS plan
UNION ALL SELECT 'olivia.johnson@example.com','u-1002','Olivia Johnson','+13125550102','free'
UNION ALL SELECT 'william.davis@example.com','u-1003','William Davis','+12145550103','business'
)
SELECT * FROM demo_contactsCreate the data model
In the left sidebar, open Data models and click New model. Then:
- Source.
Choose the warehouse connection the query runs against. - Write your model query.
Paste your SQL. Keep SQL query as the query type. - Run preview.
Check the rows and column names before moving on. Click Next step when the result looks right.

Pick Reverse ETL only for a model that feeds pipelines. Choose one of the AI agents options instead if the same model should also answer agent questions.

Review the columns Renta read from the query and mark the one that identifies a row. Reverse ETL needs this key to tell a changed row from a new one, so pick the column you will also match on in Intercom, such as the email.

Give the model a name and a short description, then click Create model. The name is what you pick from the Data model dropdown when you build the pipeline.

The model appears in the list with the Reverse ETL scope and is ready to use in a pipeline.

Create an Intercom pipeline
The destination and the data model have to exist before you start.
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 Intercom under Already connected and click Next step.

Choose the Intercom connection you created earlier and click Next step. The card shows the region the workspace lives in, which is how you tell two workspaces apart.

Pipeline configuration
On the final step, choose what Renta writes to Intercom and which columns fill it.
What Renta sends
Pick the Intercom object and the data model behind it. The blocks below the choice adapt to it, so make this choice first.

| Object | Description |
|---|---|
| Contacts | Each row becomes a person in Intercom, matched by email or external id. Use it to keep profiles current for messaging and segmentation. |
| Companies | Each row becomes an account, matched by its company id. Use it for account attributes such as plan or seat count. |
| Events | Each row becomes an event on a person's timeline. Events are the trigger for messages and the raw material for behaviour segments. |
Then pick the Data model. The fields available for matching and mapping below come from it.
Events are insert-only. Intercom never updates or removes an event, so a row that stays in the model is sent again on every run. Build event models from rows that appear once, such as completed orders, rather than from a snapshot table.
Record matching
A contact pipeline needs to know which value identifies the person, because Renta looks the contact up before deciding to update or create.

The left dropdown offers the unique key of the data model. The right one offers the two identifiers Intercom searches by: email and external_id. Renta sends the matched value with every row, so you do not need to repeat it in the mapping block below.
Companies and events have no separate matching block. A company is matched by the company_id you map as an ordinary field, and an event carries its identifier in the body.
Field mapping
Connect the columns of your data model to Intercom fields.

| Mapping type | Description |
|---|---|
| Standard | Takes the value from a data model column. |
| Static | Writes the same fixed value into every record. |
| Variable | Writes a value from the sync itself, such as the data model name or the time the run started. |
The right-hand dropdown holds two kinds of fields. Standard ones come with every workspace, such as Name, Email, Phone, User ID, Signed up, and Last seen. Below them sit the custom data attributes your own workspace defines.
An events pipeline has to map Event name and at least one identifier of the person. Without a name Intercom has nothing to record, and without an identifier it cannot tell whose timeline the event belongs on. A companies pipeline has to map Company ID for the same reason.
Sync behavior
Set what happens to an Intercom record whose row disappears from the data model.

| Option | Description |
|---|---|
| Ignore | The record stays in Intercom as it is. This is the default, and the only option for companies and events. |
| Archive | Archives the contact, which is what Intercom calls Remove from Intercom. The person stops appearing in lists and stops receiving messages. |
Then name the pipeline.

Integration name 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. A run compares the data model against the state the previous run recorded and sends only what moved, so a daily sync touches a handful of records instead of the whole model. The first run has nothing to compare against and delivers everything.
| Row state | What Renta does |
|---|---|
| New | Creates the contact or company, or records the event. |
| Changed | Writes the mapped fields again with the new values. Attributes outside the mapping stay as they are. |
| Unchanged | Sends nothing. |
| Deleted | Follows the deleted-row policy: leaves the record alone, or archives the contact. |
Limits
- Records are written one at a time.
The Intercom API has no batch endpoint for contacts, companies, or events, so a run makes one request per record. A large first sync therefore takes noticeably longer than a later incremental one. - Events cannot be corrected.
Intercom stores an event as it arrives. There is no update and no delete, so a mistake in an event model can only be fixed going forward. - A run stops when rejections pile up.
Renta halts the run when more than 30% of a batch, or more than 10% of the rows delivered so far, come back rejected. Records already written stay in Intercom, and the next run picks up where this one stopped. - Data attributes are not created for you.
Renta writes into the attributes your workspace already defines. Add a missing one in Intercom first, then reopen the pipeline settings so it appears in the dropdown.
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.