Store integration
A row of popular merchant icons with their current discounts — one of the highest-performing placements, because customers recognise the brands.
Available Android · Available iOS
The two steps
Step 1 — Fetch and display
Call the store method on each launch, and display the stores with their names and discount details. The discount is what makes the row work — an icon grid without "Up to 15% off" underneath is just a logo wall.
- Android
- iOS
CHEGNetworkCallHelper.Companion.getTopStoreDetails(
virtualId,
placementId, // e.g. "00"
"EN",
securityToken,
additionalParams,
object : CHEGTopOfferCallBack {
override fun onResponse(responseString: String?) {
// Parse and render the store row
}
}
)
CheggoutApp.getCheggoutTopStores(
languageCode: "EN",
virtualId: "pub_8f14e45fceea167a",
placementId: "00",
additionalParams: "",
securityKey: ""
) { storeIcons in
print("native top stores: \(String(describing: storeIcons))")
}
Parameters are documented on Placements.
Step 2 — Handle the tap
When a store icon is tapped, open the Cheggout SDK and pass that store's href in the launch
payload. The customer lands on the merchant's page inside the marketplace.
See Android launching and iOS launching.
Response fields
| Field | Type | Description |
|---|---|---|
storeId | string | Merchant identifier |
title | string | Store name — display this |
logo | string | Logo image URL |
discountPercentage | string | Current discount — display this |
category | string | Store category, for grouping or filtering |
href | string | Deep-linking and tracking information. Pass to the SDK on tap. |
[
{
"storeId": "318",
"title": "Example Retailer",
"logo": "https://assets.example.com/store-318.png",
"discountPercentage": "15",
"category": "Fashion",
"href": "<click>https://click.cheggout.com/?type=store&id=318</click><track>https://tracking.cheggout.com/REPLACE</track><clicktrack>https://tracking.cheggout.com/REPLACE</clicktrack><browser>Custom</browser><id>REPLACE_ID</id>"
}
]
href is a pseudo-XML tagged string. The SDKs parse it; headless integrators extract the tag
they need. See Tracking.
Tracking
The same contract as banners:
| Event | Fire |
|---|---|
| A store icon becomes visible | The impression, passing that store's href |
| The customer taps it | The click, via the SDK launch |
For a horizontally scrolling row, fire impressions as icons scroll into view rather than all at once on load — otherwise you count impressions for stores nobody saw.
Design guidance
Always show the discount. discountPercentage is the reason a customer taps. A row of logos
without it converts poorly.
A horizontal scroller works well — six to eight visible, the rest scrollable. Customers recognise brands faster than they read categories.
Handle a 0 discount by hiding the discount label rather than showing "0% off".
Use category for grouping if you have room for more than one row — "Fashion", "Food",
"Travel" — but a single mixed row usually performs fine.
Handle an empty response by hiding the whole row, including its heading. A "Popular stores" heading over nothing looks broken.
Load images lazily and keep placeholders the same size as the final logo so the row does not jump.
Where to put it
The store row does well immediately below the primary content on a home screen — near enough to the top to be seen without scrolling, far enough down not to compete with your own primary actions.