eCommerce API Integration: The Complete Guide

eCommerce API Integration: The Complete Guide

Kinga Nowak
Kinga Nowak
  • January 21, 2026

If you’re Googling ecommerce API integration, you’re not doing it for fun (well, maybe ecommerce API integration is your idea of fun… no judgement). But seriously: you’re probably trying to make your store talk to the rest of your stack, ERP, OMS/WMS, support, analytics, marketing automation, so that sweet, sweet data flows automatically and your team can get out of copy-paste mode.

This guide answers the most common questions around ecommerce API integration. By reading it, you’ll learn:

  • What ecommerce API integration actually is (plain English, no jargon)

  • What you should integrate (a simple system map, so nothing gets missed)

  • Which approach you should choose (native plugins vs custom APIs vs iPaaS vs unified APIs)

  • A 12-step plan you can actually ship

  • A simple data template for your customers, products, and orders, with key events (so your systems actually match)

  • Reliability and security best practices

  • And how to turn all that integrated data into personalisation and lifecycle journeys

Quick reality check: It’s not ‘done’ when it works once. It’s done when it works on Black Friday.

SALESamango api integration

What is ecommerce API integration?

eCommerce API integration is the process of connecting your ecommerce platform with other tools using APIs (Application Programming Interfaces) so data moves automatically, securely, and reliably between systems.

In plain terms: instead of people exporting CSVs or copying values between dashboards, your tools exchange information in the background.

In most ecommerce cases, ecommerce API integration means syncing:

  • Customers (profiles, identifiers, consent)

  • Products (catalogue, pricing, inventory, availability)

  • Orders (transactions, line items, fulfilment status)

  • Events (product views, add-to-cart, checkout, purchase, returns)

It also covers the day-to-day actions behind the scenes, like:

  • updating inventory across systems

  • creating shipments and pushing tracking updates

  • opening support tickets when an order has an issue

  • triggering marketing automation journeys based on behaviour

  • exporting data into a warehouse for reporting and analytics

The goal of ecommerce API integration is usable data: up-to-date, accurate, and available where your teams actually need it.

>> Hungry for new knowledge? Read about why MCP is the key to unifying the MarTech stack and scaling AI

What should you integrate?

A solid ecommerce API integration plan starts with a quick inventory of your tools. If you don’t map your stack first, you’ll either miss something important… or integrate everything “just in case” (which is how your project gets messy fast).

Start with your goal (because “integrate everything” is not a strategy)

Different goals require different integrations. A simple way to choose what to integrate is to start with the outcome:

  • If you want better lifecycle marketing (cart recovery, post-purchase, recommendations): prioritise your ecommerce platform + product catalogue + behavioural events + consent, then connect your marketing automation/CDP/personalisation tools.

  • If you want cleaner operations (no overselling, faster fulfilment, fewer support fires): prioritise inventory, orders, fulfilment/shipping updates, then connect OMS/WMS/ERP.

  • If you want reliable reporting: prioritise order + refund/return data flowing into analytics/BI or a warehouse, with consistent IDs and timestamps.

You can absolutely integrate more later, but this just helps you pick the right “first wave.”

The ecommerce systems map (where integrations usually live)

Usually, your ecommerce stack includes systems across these three areas:

Commerce core

  • Ecommerce platform (catalog, checkout, orders)

  • Payments + fraud tools

  • Promotions, subscriptions, loyalty

Operations + fulfilment

  • ERP (finance, procurement, invoicing)

  • OMS (order routing, cancellations, returns)

  • WMS (warehouse picking/packing)

  • Shipping/labels/tracking

Customer + growth

  • CRM (customer records, sales)

  • Support/helpdesk/contact centre

  • Analytics (product + marketing attribution)

  • Marketing automation / CDP / personalisation tools

Quick tip: Before you integrate anything, decide where each piece of information should “officially” live.

For each system, note:

  • who’s responsible for it

  • what it’s the main place for (the “official” version of that data)

  • who needs that data (which other tools rely on it)

This prevents the most common integration fail: two systems updating the same field in different ways (and nobody noticing until reports don’t match and customers get the wrong message).

eCommerce API integration approaches: plugins vs custom APIs vs iPaaS vs unified APIs

There’s no single “best” ecommerce API integration approach. The right choice depends on two things:

  • How standard your needs are

  • How much control (and responsibility) you want

Here are the four most common paths.

Option A: Native and plug-and-play integrations (fastest time-to-value)

Choose this when:

  • you’re on a common platform (Shopify, Magento, BigCommerce, etc.)

  • you want standard sync + standard event tracking

  • you want something working quickly with less engineering time

Best for: getting customer/order/product data flowing into marketing tools or analytics fast.

Tradeoff: you get speed, but less flexibility if you need custom logic.

Option B: Custom ecommerce API integration (most control)

Choose this when:

  • you have custom checkout flows or unique data rules

  • you need strict reliability guarantees

  • you run multiple stores/regions with complex logic

  • you want to design your own event-driven setup

Best for: teams that need integrations to behave exactly how the business behaves.

Tradeoff: you own the maintenance (versioning, monitoring, fixes, upgrades).

Option C: iPaaS / middleware (connect lots of apps with less code)

Choose this when:

  • you’re connecting many tools across departments

  • you want prebuilt connectors and visual mapping

  • you want centralised monitoring and transformations

  • you want some self-serve power for non-dev teams

Best for: “we have a lot of systems and not enough engineering hours.”

Tradeoff: it’s not “set and forget.” You still need clean definitions and testing, or you’ll just automate chaos.

Option D: Unified APIs (useful if you support many ecommerce platforms)

Choose this when:

  • you build products that integrate with many ecommerce platforms

  • you can’t maintain separate integrations for every platform’s quirks

Best for: SaaS teams and agencies supporting multiple client stacks.

Tradeoff: the “one-size-fits-all” model may not cover every edge case you care about.

Quick decision guide (no overthinking)

If you want the quickest win → Native integration

If you need full control and custom rules → Custom APIs

If you have lots of tools to connect → iPaaS

If you support multiple ecommerce platforms → Unified APIs

Quick comparison ecommerce API integration approaches

Approach Best when… Pros Watch-outs Typical owner
Native You’re on a common platform (Shopify, Magento, BigCommerce) and want results fast Fastest time-to-value, low build effort, usually “good enough” for standard sync Limited flexibility, can be opinionated about data/events, sometimes hard to debug Marketing ops + light engineering support
Custom APIs You have custom checkout/data rules, multi-region complexity, or strict reliability needs Maximum control, tailored to your business logic, scalable architecture You own maintenance, versioning, monitoring, incident response Engineering / platform team
iPaaS / middleware You need to connect lots of tools with less custom code Prebuilt connectors, mapping/transforms, centralised monitoring, faster iteration Can become “integration spaghetti” without governance; still needs testing RevOps / IT / integration team (+ some engineering)
Unified APIs You support many ecommerce platforms (SaaS, agencies, app builders) One integration surface, less platform-by-platform work, faster coverage Abstraction may not match edge cases; still need validation and fallbacks Engineering (product integrations team)

The ecommerce API integration blueprint: 12 steps to launch

Think of this as the “don’t regret it later” plan for ecommerce API integration. This blueprint covers the usual suspects: marketing automation, OMS/WMS, ERP, and data warehouses. Following these steps helps you avoid the classic outcome: the integration technically works… but nobody trusts the data.

Step 1: Define the outcome (one sentence)

Start with the “why,” not the endpoints. One sentence is enough.

Examples:

  • “Recover more abandoned carts with real-time triggers.”

  • “Prevent overselling with accurate inventory sync.”

  • “Improve repeat purchase rate with personalized lifecycle journeys.”

If you can’t describe the outcome, you’ll end up integrating everything “just in case,” and the project scope will creep fast.

Step 2: List the systems + owners

Before you build anything, write down what’s in the stack and who’s responsible for each tool. This sounds basic, and it’s exactly why people skip it (at their own peril).

At minimum, capture:

  • system name

  • owner/team

  • what data it stores

  • who depends on it

This is how you avoid integration work getting blocked by “Wait, who even owns that?”

Step 3: Decide where key data should officially live

Here’s the simple version: pick the “boss” system for important data. Not “who also has a copy,” but who has the official version.

Do this for:

  • customer profiles (and consent)

  • product catalogue

  • inventory

  • orders + returns

This step prevents two tools from editing the same field and slowly drifting apart until your reporting becomes a guessing game.

Step 4: Choose sync direction

Most integrations are either:

  • one-way (A → B), or

  • two-way (A ↔ B).

Two-way sync is tempting (“Let everything update everything!”), but it’s also where the weirdest bugs live. If you can, start one-way and add two-way only where it truly fits a business case.

Step 5: Decide how fresh the data needs to be

Not everything needs to be speedy real-time. But some things absolutely do.

A practical way to think about it:

  • Seconds: cart, checkout, purchase, inventory changes

  • Minutes: segments, personalisation updates

  • Hourly/daily: backfills, reconciliation, historical enrichment

Clarity here protects your budget (and your timeline): you won’t overbuild a Ferrari when a bicycle will do. 

Step 6: Agree on a standard format for shared data

You don’t need a full CDP to do this. You just need consistency, so systems don’t “interpret” the same data differently.

Examples of standards worth setting early:

  • money fields (amount + currency, same format everywhere)

  • timestamps (ISO 8601, UTC)

  • ID rules (email can change; customer_id shouldn’t)

This is the quiet foundation that keeps your stack aligned.

Step 7: Pick the right integration pattern for each job

Most ecommerce API integration setups use a mix, because each pattern is good at something different:

  • Webhooks/events when “something happened” (order created, cart updated)

  • APIs when you need to fetch/update a specific record

  • Batch jobs for backfills and “make sure we didn’t miss anything” checks

If you force everything into one pattern, you’ll either miss real-time events or end up with fragile workarounds.

Step 8: Plan identity matching (guest → known customer)

This one matters a lot for marketing and personalisation.

You need a plan for how anonymous behaviour becomes linked to a real person:

  • cookie/device identifier → email capture → customer profile

  • guest checkout → known customer

  • multiple identifiers merging cleanly (without duplicates)

If identity matching is shaky, personalisation turns into guesswork: journeys don’t fire, or they fire on the wrong profile, and customers get irrelevant messages.

Step 9: Build reliability in from day one

Integrations don’t fail once. They fail in small, annoying ways, over and over; dreaded timeouts, rate limits, partial outages.

So bake in the basics early:

  • retries with exponential backoff

  • idempotency (safe replays without duplicates)

  • a dead-letter queue (DLQ) for events that can’t be processed

  • a replay plan for recovery

This helps you avoid losing data during peak traffic and struggling to recover it later.

Step 10: Design security + compliance early

Security changes architecture, so don’t bolt it on at the end (vibe coders, we’re looking at you).

Decide upfront:

  • authentication method (OAuth, API key, signed webhooks)

  • what PII is allowed to move (and what should never move)

  • encryption in transit + at rest

  • how consent changes propagate to any system that sends messages

If consent doesn’t travel cleanly, teams either message incorrectly (risky) or hold back (lost revenue).

Step 11: Test like it’s peak season

Staging is where integrations look good. Peak season is where they prove it, when traffic spikes and downstream tools start timing out.

Test for real-world problems:

  • wrong mappings / missing fields

  • duplicates and out-of-order events

  • downstream outages (destination API down)

  • rate limiting

  • peak load behaviour (sale day simulations)

Basically: build for the day SHTF. Because, oh boy, it will.

Step 12: Add monitoring so you catch issues before customers do

If you can’t see what’s happening, you’ll only find out when revenue dips or someone posts in Slack: “Is this broken?”

Monitor:

  • ingestion rate (are events arriving?)

  • delivery success rate (are they reaching the destination?)

  • error rate by endpoint

  • latency (p50/p95)

  • data freshness (time since last product/order sync)

  • DLQ size + replay throughput

This turns integrations from “fragile plumbing” into an actual system you can trust.

The data model you can steal: customers, products, orders, and events

You do not need a perfect schema to start. You need a minimum data contract that every system agrees on. That is what keeps your ecommerce API integration clean as you add more tools over time.

Think of it like a shared template. If every tool receives the same core fields in the same format, your reporting makes sense, and your automation does what you expect.

Customers (minimum)

Identifiers

  • customer_id (your ecommerce platform ID)

  • email (if known)

  • phone (if collected)

  • external_ids (optional)

Profile

  • first_name, last_name

  • locale, country

  • created_at, updated_at

Consent (make it first class)

  • email_marketing_opt_in (true/false)

  • sms_opt_in (true/false)

  • consent_updated_at

  • consent_source (checkout, popup, preference centre)

Why consent matters: if consent does not integrate cleanly, teams either message the wrong people (risky) or avoid messaging altogether (lost revenue).

Products (minimum)

  • product_id

  • title

  • url

  • image_url

  • category

  • brand (optional)

  • price + currency

  • availability or in_stock

  • variants (optional)

This enables accurate product blocks in emails, recommendations, and browse or cart follow-ups.

Orders (minimum)

  • order_id

  • customer_id and/or email

  • created_at, paid_at, fulfilled_at (as available)

  • status

  • total_amount + currency

  • line_items: product_id, qty, unit_price, line_total

This gives you the basics for post-purchase journeys, support context, analytics, and revenue attribution.

Events (minimum)

Start with a practical set:

Behavioural

  • product_view

  • add_to_cart

  • begin_checkout

Transactional

  • purchase

  • refund

  • return_initiated

Growth and compliance

  • newsletter_signup

  • consent_updated

For each event, include:

  • event_name

  • timestamp

  • customer identifier or anonymous identifier

  • properties (product IDs, cart contents, value, etc.)

Event-driven ecommerce integrations: webhooks, queues, retries, idempotency

Event-driven ecommerce API integration means you treat important moments in your store as events and move them through a pipeline built for spikes, failures, and retries.

In other words: you stop “calling an API and hoping.” You start capturing what happened, then delivering it safely to the systems that need it.

When event-driven is worth it

Go event-driven when:

  • you need real-time triggers (cart recovery, post-purchase journeys, inventory updates)

  • you have multiple destinations (warehouse, marketing automation, support)

  • you cannot afford dropped events during spikes

  • you want a clean way to retry and recover

If your integration is small and low-risk, a simple API sync can be enough. Event-driven is for when reliability is the business requirement.

Here’s the core idea of it…Capture the event first. Process it second.

That’s what makes the whole setup resilient.

The pattern that holds up under load

Here is the common flow most teams settle on for ecommerce API integration:

  1. Receive the webhook

Your ecommerce platform notifies you that something happened, like order_created.

  1. Validate it

Check auth or signature, and do basic payload sanity checks.

  1. Store it, then queue it

Save the event and push it into a queue so it cannot disappear during a spike.

  1. Process it in a worker

A worker transforms the event into the format your destination needs, then delivers it.

  1. Record the outcome

Log success, retry failures, and route “stuck” events to a DLQ for later recovery.

How to use this: treat it as your default “spine.” Then each destination (marketing, analytics, support) becomes a delivery step off the same stream of events.

What each piece does

Webhooks

Webhooks are the “something just happened” signal. Use them for cart, checkout, purchase, refunds, and fulfilment updates.

Queues

Queues are your buffer. They soak up traffic spikes and protect you when a destination is slow or down. Think of it as your integration’s shock absorber.

Workers

Workers do the actual work. They pull events from the queue, map fields, call destination APIs, and record results.

If you want a mental model: webhooks notify, queues hold, workers deliver.

Webhooks vs APIs vs queues

  • Use webhooks when you need to react fast. Something happened, trigger an action.

  • Use APIs when you need to fetch or update a record. Get order details, update a profile, write a shipment.

  • Use queues when you care about reliability and scale. Do not lose events, even during peak traffic.

Most , good, ecommerce API integration setups use all three:

Webhook arrives, worker fetches details if needed, queue controls delivery, and retries.

Retries

Integrations fail in small, annoying ways. Timeouts. Rate limits. Destination hiccups.

A practical retry strategy:

  • retry timeouts and 5xx server errors

  • back off between retries so you do not hammer the destination

  • do not retry 4xx validation errors. Fix the mapping instead

How to use this: define retry rules per destination, then monitor them. Retries should be a system, not a vibe.

Idempotency

In event-driven setups, retries and replays are normal. So duplicates are normal too, unless you design for them.

Idempotency means: processing the same event twice does not create two orders, two refunds, two profiles, or two messages.

Common ways teams handle it:

  • include an event_id and ignore duplicates you have already processed

  • use upserts when writing records, not “always create”

  • use idempotency keys on write calls when supported

DLQ and replay

A DLQ (dead-letter queue) is where events go when they cannot be processed after retries.

This is your safety net. Not just for engineers, for the business:

  • you do not lose revenue-driving events

  • you can fix the root cause and replay the missed events

  • you have a clear audit trail of what failed and why

How to use it:

  • alert when DLQ volume grows

  • store the failure reason with each event

  • replay after a fix, then confirm delivery success

Quick checklist

Your event-driven ecommerce integration is in good shape when:

  • webhook events are validated and stored before processing

  • a queue buffers spikes and slow destinations

  • retries exist and do not overwhelm downstream systems

  • duplicates do not create duplicate side effects

  • failures land in a DLQ with a replay plan

  • you can see success rate, latency, and top error types in monitoring

Security + compliance fundamentals

Security should not be the “final checklist” you tape onto ecommerce API integration. It shapes what you can collect, where you can send it, and how you can store it. If you get it wrong, in the best case, you get noisy incidents. In the worst? You get a compliance problem with a price tag.

The minimum baseline (do this even for “simple” integrations)

1) HTTPS everywhere

No exceptions. If it touches customer data, it rides over TLS.

2) Store secrets like secrets

Storing API keys in code or shared docs is how a ‘quick setup’ turns into an emergency key rotation. Use a secrets manager, keep access limited, and plan for rotation.

3) Least privilege

Give each integration only the permissions it needs. If your connector only needs read access to orders, do not hand it admin keys “because it was easier.”

4) Audit logs for sensitive actions

If data is created, updated, deleted, or exported, you should be able to trace what happened and when.

Authentication: what you will actually use

In ecommerce API integration, you will usually see:

  • OAuth: best when supported, especially for user-based permissions and scoped access

  • API keys: common, but treat them carefully and rotate them

  • Signed webhooks: critical for webhook security, so you can verify the sender

If you are using webhooks, always validate signatures. Otherwise, anyone can post “order_created” to your endpoint, and your systems will politely believe them.

PII hygiene (how to avoid storing trouble)

A simple rule: do not move PII you do not need.

If a destination does not require phone numbers, do not send them.

Also:

  • Do not log raw PII in application logs. Logs live forever in surprising places.

  • Mask or redact sensitive fields by default.

  • Define retention rules. Do not keep personal data “just in case.”

Consent is not a checkbox. It is data that must move correctly across systems that message customers.

Make sure your integrations carry:

  • the consent state (email and SMS if relevant)

  • when it was last updated

  • where it came from (checkout, popup, preference centre)

Client-side tracking: useful, but easy to abuse

Browser tracking can be tampered with. People can block it, spoof it, or send junk.

If you rely on client-side events:

  • validate important actions server-side when you can

  • limit what can be sent from the browser

  • treat client events as signals, not gospel

A quick “security done” checklist

You are in a good place when:

  • secrets are stored securely and rotated on a schedule

  • webhook signatures are verified

  • access is scoped with least privilege

  • PII is minimized and redacted from logs

  • consent updates flow into every messaging system

  • encryption is used in transit and at rest where applicable

Testing + monitoring and how ecommerce integrations fail in real life

Most ecommerce API integration failures are not dramatic. Nothing explodes. Nobody gets a big red error screen.

Instead, the data quietly gets weird. Orders go missing in one tool. Events arrive twice. A field changes type. A destination rate-limits you during a campaign. Then you start to have flashbacks from high school algebra and say:

“Why do these numbers not match?”

The most common failure modes

Field mapping drift

Platforms evolve. A field gets renamed, a new enum value appears, a payload changes shape. Your integration keeps running, but starts mis-mapping data.

API version deprecations

Everything works until it doesn’t. Deprecations and breaking changes can turn into silent failures if you do not monitor for them.

Rate limit spikes

Sales days and big campaigns create bursts. If your integration is not rate-limit friendly, deliveries fail, or your backlog grows fast.

Duplicate or missing events

Webhooks can be retried by the sender. Events can arrive out of order. If you are not idempotent, duplicates create duplicate side effects.

Partial outages

Sometimes the destination is half down. You might get timeouts for writes but reads still work, or one endpoint fails while others succeed. This is why retries, DLQs, and observability matter.

What to test (so you are not surprised later)

Testing should go beyond “it worked once.”

Test for:

  • mapping correctness (fields, formats, IDs, currency)

  • duplicates and out-of-order events

  • partial payloads or missing fields

  • rate-limiting behaviour

  • downstream timeouts and outages

  • high traffic spikes (sale-day simulation)

A practical approach: pick one “important flow” and test it end-to-end, like add-to-cart → purchase → fulfilment update → post-purchase journey trigger.

What to monitor (non-negotiables)

If you only monitor one thing, monitor delivery success. But ideally, you track:

  • event ingestion rate (are you receiving what you expect?)

  • delivery success rate by destination

  • error rate by endpoint and error type

  • latency (time between event and downstream update)

  • data freshness (time since last product sync, last order sync)

  • DLQ volume and aging (how long failures sit unresolved)

One dashboard to rule them all

Create an “integration health” dashboard with:

  • last successful event time

  • last successful sync time per object

  • error trend and top error types

  • DLQ depth and oldest message age

  • latency percentiles

This gives you fast answers when someone asks, “Is it broken?” and helps you fix issues before customers notice.

Turning all that integrated data into revenue using personalisation + lifecycle journeys

A lot of ecommerce API integration content stops at “now the systems talk.”

Cool. But the real win is what happens next: integrated data lets you respond to customer behaviour in real time, personalize the experience, and automate lifecycle journeys that drive repeat revenue.

Here are the most common revenue plays and the integration pieces they depend on.

Cart recovery that gets you sales

Abandoned cart emails are everywhere. Cart recovery that feels timely and relevant is rarer.

To do it well, you need:

  • reliable add_to_cart and begin_checkout events

  • identity matching so carts connect to a real profile

  • product data so messages show the right items, prices, and stock status

If cart events arrive late or product data is wrong, cart recovery becomes annoying instead of helpful.

Post-purchase customer journeys for repeat revenue

Post-purchase is where you earn the second order.

To build good journeys, you need:

  • a clean purchase event with order details

  • fulfilment updates (shipped, delivered)

  • product attributes to drive smart cross-sell and upsell logic

This is how you automate thank you messages, delivery updates, onboarding tips, replenishment reminders, and review requests without sounding like a robot.

Personal product recommendations

Recommendations are only as good as the data behind them.

You need:

  • product catalogue sync with usable metadata

  • behavioural signals (views, carts)

  • purchase history

When those three are connected, you can recommend what a customer actually cares about, not what you are trying to clear from the warehouse.

Segmentation you can trust

Segmentation drives targeting, personalisation, and spend efficiency. Bad segmentation does the opposite.

To build segments you can rely on, you need:

  • consistent identifiers

  • accurate consent state

  • complete order history, including refunds and returns when relevant

Simple rule: if customer data is late, wrong, or incomplete, personalisation becomes late, wrong, or irrelevant.

Final thoughts

The best ecommerce API integration is the one that pays you back. It reduces manual work, prevents expensive mistakes, and turns customer behaviour into timely actions that drive revenue.

If you want the short playbook: pick the outcome, integrate the minimum needed to support it, and invest in reliability, monitoring, and consent from day one. That is how you get integrations that do not just run, but keep running when it counts.

Kinga Nowak
Kinga Nowak
Senior Frontend Web Developer

Latest posts

#Growth Hack Series: Avoid
Read more
January 15, 2026

#Growth Hack Series: Avoid "Zero-result" Dead Ends Using AI Product Discovery

We have all been there. You have a specific image in your head: a mid-century modern armchair in teal velvet, or a dress with a very specific floral pattern. You go to an online store and type "blue chair" or "flower dress". The results? Hundreds of irrelevant items that force you to scroll for twenty minutes. Or worse: "No results found.&quo...

GOG: A Story of Mission-driven Success
Read more
December 29, 2025

GOG: A Story of Mission-driven Success

GOG is a digital distribution platform with a curated selection of thousands of timeless classics games. Part of the CD PROJEKT Group, GOG serves a global market of millions with a user-first philosophy: all games are DRM-free, offering a sense of ownership and privacy. 

9 Ways to Win Christmas Sales Without Becoming The eCommerce Grinch
Read more
December 23, 2025

9 Ways to Win Christmas Sales Without Becoming The eCommerce Grinch

There is something special in the air during December. It is a mix of festive anticipation and the low-level hum of anxiety. You wish for Christmas to arrive already and, at the same time, you know how much you need to do before the bliss of blanket laziness. But first - presents! The stakes are high: you are not buying objects, you express love. And you don’t have m...

Read more