Rappi Inventory Integration Guide
Our inventory integration is the first step for any partner to establish a presence in our apps. This integration allows you to:
- control product availability
- update prices
- update discounts,
- maintain the product range for each store.
Together, this information is referred to as inventory data.
Integration Checklist
1. Schedule your Onboarding
To get started, schedule a validation session with your technical account manager (TAM).
This session will allow you to:
a. Answer any questions about building and maintaining the master catalog that will serve all your stores (if the process hasn't already been initiated by our commercial team);
b. Map your store identifiers against Rappi's internal store identifiers;
c. Understand the methods available to extract data from your own systems in an automated manner;
One of the major bottlenecks for rapidly integrating with Rappi Inventory is a retailer's lack of knowledge about their own systems. Inventory data can usually be found in a retailer's enterprise resource planning (ERP), but it's not uncommon for associated data (availability, price, or promotions) to live in different systems.
Understanding this complexity is paramount for reducing the integration lead time. Please bring engineers to this meeting, and keep the business associates at home 😉.
d. Define the type of inventory integration that suits you best;
Rappi currently offers its partners two methods for feeding inventory data into our platform; you may consume our inventory REST API, or upload CSV files your exclusive folder via STFP.
e. Establish your inventory data feed schedule.
2. Create a New ETL Process
ETL stands for Extract, Transform, Load. This is what the inventory integration is all about. Nothing more, nothing less.
a. Extract inventory data from (one or more) internal systems;
b. Transform the data to match our schema specifications;
c. Transfer (load) the inventory data to Rappi.
3. Obtain Credentials
Once Rappi's retail team has built your master catalog and created a test store, and your team (or a third-party service provider) has created a new ETL process for syncing your inventory data, you will receive your credentials.
Your TAM will provide authentication credentials. Once these credentials are set up in your ETL, Rappi should start receiving your inventory data.
Build your Catalog
Rappi's commercial team will work with you to build your catalog. Our retail team will create your master catalog and categorization tree to ensure that products are displayed appropriately within the app.
Managing store ranges vs Adding new products to the master catalog
At any given time, if the inventory feed for any given store includes a SKU never yet sold there, but the SKU is found in your master catalog, that SKU is automatically added to that store's range.
On the other hand, SKUs missing from your master catalog will be ignored by the ingestion engine if sent on inventory feeds. Always contact your account manager whenever you need to add new products to your master catalog.
Your Store List
Whether you operate 1 or 100 stores, the store's unique identifiers must be mapped against the ones managed internally by Rappi for proper data ingestion.
It might be tricky to handle this aspect of the integration when your inventory data (availability, prices, and promotions) reside in multiple systems, and store identifiers are different in each one of them. In such cases, it's required that you define a single identifier for each store, and your ETL process must maintain an internal mapping of those ids in each of your internal systems.
Deleting a Catalog Item
There is currently no provision for deleting a SKU from your master catalog. Simply sending the stock = 0
for any SKU will mark it as unavailable, and it'll no longer be shown in our app.
Inventory Management
Communicating accurate, current stock availability and prices is an essential component of building trust with your customers. Availability and price management are responsibilities of retailers.
Rappi needs to receive information in the shortest possible time whenever there are significant changes to any inventory data. Delays on feeding Rappi with fresh inventory data may impact the user experience in multiple ways:
Stale information on product availability may lead customers to purchase products that are no longer in stock. Pickers will contact them to offer alternative substitutions, BUT customers may cancel their order. Ultimately, Rappi may limit the assortment of products displayed to customers in the app to reduce such incidences.
Stale information on product prices may lead to price differences. If this results in an underpayment by customers, these price differences represent intolerable losses for Rappi.
Stale data on promotions may lead to reduced conversion for your stores when customers compare them with other retailers that are constantly publishing new promotions.
Retailers may temporarily adjust prices using two methods: discounts or promotions. The documentation on promotions will be available soon.
Sale Type Categorization
Sale type refers to how products are sold to customers. SKUs may fall into one the following four categories:
UNITS Products that are sold in discreet units, i.e., by item, require the
price
field to be populated and the propertysale_type = "U"
for units. For example, toothpaste is sold in tubes. The customer understands that the advertised price is the cost of a single tube.BUNDLES Products that come as discreet units may also be sold in bundles. For example, toothpaste may be offered in multiples of 3. As the product id must be unique, Rappi recommends using the format
<ean>_<quantity>
(for .CSV uploads) orgtin_<quantity>
(for API uploads) for product id, if you do not have a unique SKU identifier assigned to a bundle.VARIABLE WEIGHT Certain products are sold by weight (Kg). This is especially common for fresh food items, like fruits, vegetables, meats, or ready-to-eat meals. The
price
field must be populated, and the propertysale_type = "WW"
set.TRANSFORMED Transformed products are those reduced or altered for sale. For example, a Parmesan wheel may be received as stock and then sliced for the customer to purchase. This is considered a parent/child relationship, and stock of the child product will only be displayed if the parent product has available stock. A transformed product must have its sale
price
populated with the price per Kg, and the propertysale_type = "WW"
.
Data Feed Schedules
Retailers must discuss with their TAM, which inventory-update flow suits their turnover and their systems. This will determine when you feed new data and what data feeding channel you use.
The higher frequency of inventory data updates...
... the fewer instances of stock-out or price difference incidents. Therefore your update frequency has a direct impact on Service Level Agreements (SLA) that are part of your contract with Rappi.
Retailers have the option of making a full transfer of their entire catalog once a day (Daily Integration flow) or transferring data for individual SKUs on a regular schedule throughout the day triggered by changes in availability or prices (Delta flow).
![]() | Daily Integration flow Suggested for retailers with low to medium turnover. The entire catalog (or a subset of the catalog containing only the available products) is transferred once a day, usually early in the morning. Retailers on this flow usually feed data through CSV file transfers via SFTP. |
![]() | Delta flow Suggested for retailers with medium to high turnover. Data feed loads on this flow are triggered by a combination of changes either to stock levels or prices of any SKU, accumulated over a given time frame; the name "delta" refers to the variation in those properties. Retailers on this flow should preferably feed data through our Inventory API. |
To clarify the delta flow, imagine your stores have high turnover, meaning product availability is subject to change many times throughout the day, and you've committed to load fresh data every 10 minutes.
Every 10 minutes, your ETL process would accumulate any changes in prices or product availability in your stores.
At the end of this 10-minute time frame, you're expected to feed fresh data for SKU2 and SKU3.
No data is expected for SKU1 since its inventory properties remained unaltered.
COMMUNICATE YOUR SCHEDULE
Your decision to use the Delta flow or the Daily Integration flow must be aligned with your TAM. For daily integrations, communicate your anticipated schedule, i.e., the time of the day you intend to initiate your data transfer.
Loading your Inventory Data
Rappi currently offers two different methods for loading your inventory data. Retailers may choose to upload CSV files to a dedicated FTP folder via SSH (SFTP) or to push their data to our Inventory API.
It's highly recommended that retailers on the Delta flow feed data exclusively through our Inventory API.
Implementation details for each option can be found in the sections Loading CSV files over SFTP and Rappi Inventory API v2.
IN THE BACKLOG, New product features coming soon...
- Sandbox environment for testing and QA.
- Permanently deleting discontinued catalog items.