---
url: https://talkjs.com/use-cases/peer-to-peer-rental-marketplace-chat/
title: "In-app messaging for peer-to-peer rental marketplaces | TalkJS"
---

For AI agents: Find a documentation index at https://talkjs.com/llms.txt (full content at https://talkjs.com/llms-full.txt). Get a markdown version of any page by appending .md to its URL path.

[Skip to content](https://talkjs.com/use-cases/peer-to-peer-rental-marketplace-chat/#main-content)

Rental marketplaces

# Buyer-seller chat for peer-to-peer rental marketplaces, from booking to return

In a peer-to-peer rental, the renter and the owner talk three times: before they book, at pickup, and at return. TalkJS is a [chat API](https://talkjs.com/build/chat-api/) and SDK with a ready-made chat UI that covers all three in your web or mobile app. Each conversation belongs to one rental and stays on your platform, with its photos and its history ready for the day a camera comes back scratched.

[Try for free](https://talkjs.com/dashboard/signup/premium/)[Contact sales](https://talkjs.com/contact/)

```
import { Chatbox } from '@talkjs/react-components';
import '@talkjs/react-components/default.css';

// One conversation for each rental
export function RentalChat({ appId, userId, rentalId }) {
  return (
    <Chatbox
      appId={appId}
      userId={userId}
      conversationId={rentalId}
      style={{ width: '100%', height: 500 }}
    />
  );
}
```

![Renter](https://talkjs.com/core/avatars/avatar-3.jpg)

Hi, Sam! Is the X100V free this weekend? I’d pick it up Friday evening.

18:04

![You](https://talkjs.com/core/avatars/avatar-10.jpg)

It is. It comes with two batteries and a charger. Send the request and I’ll confirm.

18:11

![Renter](https://talkjs.com/core/avatars/avatar-3.jpg)

Done, request sent!

18:12

![You](https://talkjs.com/core/avatars/avatar-10.jpg)

Got it. Will you need the shoulder strap too?

18:13

![Renter](https://talkjs.com/core/avatars/avatar-3.jpg)

Yes, please. I’ll be taking it on a weekend walk.

18:13

Reply to the renter…

![Sam](https://talkjs.com/core/avatars/avatar-10.jpg)

Your booking is confirmed. Friday at 18:30 works for pickup.

18:14

![You](https://talkjs.com/core/avatars/avatar-3.jpg)

Perfect! Shall we meet at the station?

18:15

![Sam](https://talkjs.com/core/avatars/avatar-10.jpg)

Yes, the café by the north entrance. I’ll bring the batteries and charger.

18:16

![You](https://talkjs.com/core/avatars/avatar-3.jpg)

Thanks, Sam. See you there!

18:17

![Sam](https://talkjs.com/core/avatars/avatar-10.jpg)

You’re welcome. We can check the camera together at pickup.

18:18

![You](https://talkjs.com/core/avatars/avatar-3.jpg)

Sounds good. I’ll message you when I arrive.

18:19

Write a message…

## Before the booking: buyer-seller chat that stays on your rental marketplace

Rental marketplaces put a keep-it-on-the-platform rule in their terms. Turo bans using the service to find a host or guest and then completing the deal “partially or wholly independent of the Services” in its [terms](https://turo.com/us/en/policies/terms). Outdoorsy’s [terms](https://www.outdoorsy.com/terms) go further: a host or guest “who transacts any portion of the rental outside of the Services may be entirely denied excess protection coverage”. Once a renter and an owner swap phone numbers, your fee and the record of what they agreed leave with them.

So start each rental’s conversation in your app. When a renter sends a request, your server creates a conversation for it with one REST API call. The listing’s name and photo become the conversation’s subject and photo, and your rental ID goes in as custom data. TalkJS can also hide email addresses, phone numbers, and links for the roles you choose. The chat shows them as “(hidden information)”, and they stay hidden in email, SMS, and push notifications. Once the booking is confirmed, one REST API call per person shows the real details to that renter and owner, in that conversation only. Masking is included on every plan.

[See how contact masking works in marketplace chat](https://talkjs.com/use-cases/buyer-seller-chat-online-marketplaces/)[How to unmask contact details per conversation](https://talkjs.com/docs/Guides/Control_Content_Masking/)

1.  1
    
    Rental request
    
    The renter starts a conversation.
    
    Contact details hidden
    
2.  2
    
    Booking confirmed
    
    The owner confirms the rental.
    
    Contact details revealed
    
3.  3
    
    Pickup
    
    Share the place, time, and a pin.
    
    Condition photos at return
    
4.  4
    
    Return and claim window
    
    Keep the photos and messages together.
    
    Claim window closes
    
5.  5
    
    Read-only
    
    The conversation and its history stay available.
    

The same conversation carries the rental from the first question to the end of your claim window.

## At pickup: rental marketplace chat for the handover

On pickup day, the renter and the owner need the place, the time, and a way to reach each other. All of it fits in that one conversation.

1.  Your app posts updates such as “Rental confirmed” as [system messages](https://talkjs.com/docs/Concepts/System_Messages/), which everyone in the conversation sees.
2.  The owner shares the pickup point with location sharing. It arrives as a pin with a Google Maps link.
3.  When the renter is on the way and not in your app, we email them the messages they missed after a delay you set, up to 15 minutes. They can reply to that email, and the answer shows up in the chat.
4.  You can also send mobile push notifications through APNs and FCM. SMS works too, and it’s charged separately.

[How location sharing works](https://talkjs.com/docs/Features/Messages/Location_Sharing/)[Explore notifications](https://talkjs.com/features/notifications/)

![Sam](https://talkjs.com/core/avatars/avatar-10.jpg)

Fujifilm X100V, Friday to Sunday

Friday, October 9

PickupCafé by the north entrance of the station18:30

ReturnSame placeSunday, 17:00

10:02

![You](https://talkjs.com/core/avatars/avatar-1.jpg)

Running about ten minutes late, sorry!

18:21

![Sam](https://talkjs.com/core/avatars/avatar-10.jpg)

No problem, I’m at a table by the window.

18:23

Write a message…

## At return: condition photos and chat history for rental damage disputes

In a damage claim, what counts is what both sides said and showed. Turo’s [terms](https://turo.com/us/en/policies/terms) tell renters who find damage in their initial inspection to “upload photos of such pre-existing damage at the start of your reservation”. RVshare’s [terms of service](https://rvshare.com/terms-of-service) require owners to submit departure photos before the trip starts and return photos within 48 hours after it ends to be eligible for a Protection Plan payment for physical damage.

Keep the required check-in and return photos in your booking flow, and post a system message in the conversation when the photos are uploaded. Everything else the two sides show each other goes in the chat: turn on file sharing for a role and they can send images, PDFs, and other files up to 100 MB each. Then, if there’s a claim:

-   Every message is stored with its timestamp, and your backend can list all of a conversation’s messages through the [REST API](https://talkjs.com/docs/REST_API/Messages/).
-   Add your support agent to the conversation, and they see everything said in it, including messages sent before they joined.
-   Once your claim window has closed, set each participant’s access to read-only. They can still read the conversation, but nobody can post.

[How file sharing works](https://talkjs.com/docs/Features/Messages/File_Sharing/)

One rental, a complete history

1.  Thu 18:04RenterIs the X100V free?
2.  Thu 18:30SystemRental confirmed
3.  Fri 10:02OwnerPickup details and a pin
4.  Sun 17:10Renter3 photos at return
5.  Sun 17:40OwnerThere’s a scratch on the lens
6.  Mon 09:15SupportJoins and reads it all

An example rental. Your support agent joins on Monday and sees every message and photo from Thursday on.

## Which in-app messaging SDK to use for a rental marketplace

Most chat SDKs send messages in real time. Pick one that also covers what a rental needs. Building chat yourself, even with an AI coding agent, still leaves notifications, masking, and message history to build. TalkJS gives you all of it with a ready-made chat UI for React, React Native, Flutter, and Web Components. To build your own UI, use our Data APIs for JavaScript, Kotlin, and Swift.

Already running a chat you built? Import its users, conversations, and messages, with their original timestamps, through the [REST API](https://talkjs.com/docs/REST_API/Import_Messages/).

[Read the docs to get started](https://talkjs.com/docs/UI_Components/)

## Rental marketplace chat pricing

We price TalkJS per monthly active user, with unlimited conversations, messages, and message history, so a renter counts once a month however many rentals they ask about. Basic is $279 a month with 10,000 monthly active users included, Growth is $569 a month with 25,000, and Enterprise is custom. You build and test in a free development mode on every plan, and pay when you go live. See [pricing](https://talkjs.com/pricing/) for what each plan includes, or compare TalkJS with [other chat APIs](https://talkjs.com/compare/).

## FAQs

Can a second driver or co-renter join the rental’s conversation?

Yes. Add them to the rental’s conversation from your server and it becomes a group conversation, history included. A conversation can have up to 100 participants on the Basic plan and 300 on Growth.

Does this work for vacation rentals and home sharing?

Yes. Make one conversation per stay, between the guest and the host, and the rest works the same way. Running hotels or tours too? See [chat for travel booking marketplaces](https://talkjs.com/use-cases/travel-booking-marketplace-chat/).
