Complementary products

The small things that finish the basket.

For every product, Koral finds what belongs with it: care, parts and add-ons, priced small enough to add without thinking. One set, four moments in the journey.

How shoppers meet it
Always on
What it needs
Your feed and a product ID
Status
Live on Boozt and Magasin
A grey running sneaker as seed, the Koral engine, and the care products it suggests

One set, four moments.

01

Product page

“Don’t forget” under the buy box: a short list of add-ons, with add-all in one tap.

02

Added-to-basket step

In the panel after add to basket, while the decision is still warm.

03

Basket & checkout

A quick-add row under the basket line, never above the checkout button.

04

After the purchase

On the confirmation page and in the dispatch mail, with a replenishment nudge later.

See it in action.

Four snippets: product page, added-to-basket panel, basket and order confirmation mail
01

Four moments

The same set on the product page, in the added-to-basket panel, in the basket and in the order mail.

An added-to-bag panel with a row of suggested add-ons under the product just added
02

In the added-to-basket step

The panel after add to basket: a few add-ons, and add-all in one tap.

A dispatch email with care products, and a refill reminder email sent 30 days later
03

After the purchase

The dispatch mail suggests the care products, and a refill mail follows 30 days later.

Implementation: this is all it takes.

No model to train, no tagging, no manual linking. The product feed is the only input; the rest is one endpoint.

API · Complementary products
POST https://search.koral.nu/api/v1/search/complementary
{ "productId": "YOUR_PRODUCT_ID", "feedId": "YOUR_FEED_ID" }

200 OK
{ "matches": ["231956529", "231955952"] }

Sets are generated ahead of time, so the endpoint just serves them, sub-second. Your team renders them where they belong.

Day 1

Feed connected

CSV, JSON or your platform feed. Koral generates the sets for every product in it.

Day 2–3

Endpoint wired

Your team calls the endpoint from your own components and places the result where it belongs.

Week 1

Live and measured

Pilot on one category, A/B-split, with events in your analytics. Then roll out market by market.

Good to know.

Generated ahead of time
Sets are built in the backend for the products in your feed, so the endpoint just serves them, sub-second.
Your components
Your team renders the response in your own modules, so it looks like the rest of your store.
Every market and app
Sets follow your product IDs, so the same call works across domains, markets and apps.
Analytics
Every pilot is A/B-split and measured on add-to-cart and sales, with events in your analytics.
Control
A rules engine for what shows where: categories, price bands, stock, margins and brand exclusions.
Review
Merchandisers see every generated set in the dashboard, test it on live products and remove what shouldn’t show.

Security and data.

Nothing is kept
Koral keeps nothing from shoppers. Photos and data are used for the request and not stored.
Processed in the EU
The script is served from a global CDN; requests are processed in the EU.
Uptime
99.9% uptime SLA.
Data processing agreement
A data processing agreement (DPA) comes with every contract.
Your product data
Product data stays yours; nothing is trained on it.

Questions about data processing? Write to hello@koral.nu. Privacy policy →

FAQ

Frequently asked questions.

Also from Koral

See Koral on your own catalogue.

Start with a free demo page on your own catalogue, then a one-month pilot at 50% off list prices. All we need is a product feed. Tell us a little about your store. We answer fast.

Prefer email? hello@koral.nu