E-Commerce Platforms & Online Retailers

Every link you send a shopper is a link somebody is trying to imitate

Retail runs on links. Order confirmations, dispatch notices, refund forms, password resets, seller listings, support replies — a customer receives dozens from you and cannot tell yours from a clone. Screening every URL you send, render or receive against a list of DNS-verified live phishing domains is the cheapest control in the entire stack.

390,000+DNS-verified phishing domains, all currently resolving
Every 24hComplete rebuild plus an added and removed changelog
Under 50 msTypical single-lookup latency, inside a send pipeline
100Domains per batch request, one lookup each
Transactional email links
SMS and push notifications
Seller-supplied URLs
Checkout redirect chains
Support ticket links
Peak-season surges
Home / Use Cases / E-Commerce
Why retail is the softest target

The lure is your own workflow, repeated back to the customer

Attackers impersonating a retailer are not inventing a story. They are reusing the exact sequence of messages your platform already sends, at the moment the customer is expecting them.

1

Click an advertisement

The shopper arrives at a storefront they have never visited, from a link somebody else chose to put in front of them.

2

Create an account

An email address and a password handed to a site that has existed, from their point of view, for about ninety seconds.

3

Type a card number

Into a checkout page hosted on a domain that may not match the brand printed on the box that eventually arrives.

4

Open the confirmation

An order confirmation carrying a tracking link, which the shopper is now actively waiting for and will click without reading.

5

Then three more messages

A dispatch notice from a carrier they did not choose, a delivery notification, and probably a review request.

Every step in that sequence is a link from a sender the customer only half-recognises, asking for information they have already been persuaded is normal to give. A phishing campaign that copies the sequence is therefore not asking its victim to do anything unusual at all — it is asking them to do exactly what they did yesterday, at the moment they are expecting to be asked.

Which is why the retail lure catalogue barely changes from year to year

None of these require the attacker to be clever, and all of them work better against your customers than against anybody else's, because your customers are the ones who have been trained to expect that message.

  • The dispatch notice with a small customs or redelivery fee attached to it.
  • "Payment failed, update your card to avoid cancellation", timed to land two days after a real order.
  • The refund form that asks for a card number to "return the funds to".
  • A gift-card balance check that harvests the code and drains it within minutes.
  • A loyalty-points expiry warning leading to a login clone of your account page.
  • A counterfeit product page selling the item that has been out of stock everywhere for a month.
The storefront clone damages the brand rather than an account. The attacker copies the visual identity wholesale — logo, typography, product photography, category structure, sometimes an entire scraped catalogue — and stands it up on a domain that reads plausibly at a glance. Traffic is bought through social advertising or search placement rather than email, so nobody in your organisation ever sees the lure. The first signal is usually a support ticket from somebody demanding to know where the order they placed with "you" has got to, and by then the card data is gone.
The seller side is felt by platforms and by almost nobody else. A marketplace seller's account comes with a payout destination, a stock of listings with accumulated ratings, and a messaging channel to buyers who trust it. Takeover typically begins with a phishing page imitating your own seller portal and ends with the payout bank details changed, the listings converted into a bait-and-switch, and a support queue full of buyers who have paid for goods that will never ship. Trust the seller spent two years building is spent by the attacker in an afternoon.
All of it concentrates in the fourth quarter. Peak season does not create new attack shapes; it removes the conditions under which people notice them. Inboxes carry five times the normal volume of legitimate commercial mail, everybody is genuinely expecting deliveries, discounting is extreme enough that an implausible price stops being implausible, and your own support team is far too busy to investigate an odd-looking link. An automatic screening control is worth most in exactly the weeks when a manual process is least likely to happen.
Where the check goes

Six places a lookup earns its keep in a retail stack

Each of these is a point where a URL crosses a boundary — into a customer's inbox, onto a page you render, or into a support agent's browser. Those crossings are where a check belongs.

The useful way to place this control is to stop thinking about "phishing protection" as a product category and start listing the moments when a hostname you did not personally write moves toward a customer. There are more of them than most teams expect, and each one is a single call away from being verified. The lookup returns is_phishing, category, dns_status, last_checked and a confidence value in well under fifty milliseconds, which is fast enough to sit inline in a send pipeline or a form submission without anybody noticing it is there.

Outbound transactional mail

Extract every hostname from the rendered template before it queues — tracking links, carrier redirects, marketing widgets, third-party review requests — and hold the send if one of them is on the list.

SMS and push

Short messages carry shortened links, which means the visible text tells the recipient nothing. Resolve, then check the destination host before the message leaves your gateway.

Merchant and seller onboarding

Every URL a seller supplies at signup — storefront, returns policy, support site, social profile — is checked before the account is approved, and re-checked on a schedule afterwards.

Listings and user content

Product descriptions, seller storefront copy, buyer reviews and Q&A answers can all carry links. Screen them at submission so a phishing destination never renders under your domain.

Support tickets and chat

Customers paste the link that worried them straight into a ticket. Checking it automatically gives the agent a verdict in the ticket view instead of a decision they are not equipped to make.

Network and log layers

The daily feed loads the whole database into a resolver, firewall or SIEM, so egress from your own estate is blocked and historical logs can be searched against yesterday's list.

Outbound screening

Check what you send before it lands, not after somebody complains

A retailer's transactional stream is large, templated, and assembled from pieces that other teams and vendors control. That is exactly the shape of thing that quietly goes wrong.

Nobody in a retail organisation writes the links in a dispatch email by hand. They come from a template that pulls a carrier tracking URL from a shipping integration, a returns portal link from a logistics vendor, a review-request link from a reputation platform, a product image from a content delivery network, and an unsubscribe link from the sending platform. Half of those are configured once, by someone who has since changed role, and never looked at again. When a vendor's domain lapses, when a redirect service is retired, or when a marketing campaign parameter is pasted in from the wrong document, the failure is silent — the mail sends, the link goes somewhere unintended, and you learn about it from a customer.

Distinct hostnames

The unit you are actually buying, and it is not messages

The fix is a single step in the send path: after a message is rendered and before it is queued, extract the hostnames it contains, deduplicate them, and check them. Because templates repeat, a cache keyed on the hostname with a lifetime measured in hours means a campaign sending two million messages costs a few hundred lookups rather than two million — the distinct-hostname count in a retail send is usually in the low tens.

  • Two million sends, a few hundred lookups. Deduplication and a short cache do almost all of the work for you.
  • $0.0025 per lookup on the $249 Professional package, which makes a heavily cached outbound pipeline a rounding error against the cost of the send itself.
SMS and push need their own handling, because the format defeats human inspection. A shortened link tells the recipient nothing about where it goes, mobile clients truncate what they display, and the channel has trained customers to tap first. If your provider supports it, resolve the shortened URL server-side and check the final hostname rather than the shortener — the same technique described in the URL shorteners use case. It costs one credit and removes an entire class of embarrassment.
What outbound screening does not do is stop a third party from impersonating you. It protects the integrity of your own stream: it guarantees that a link genuinely from you was verified as not being on the known-bad list at the moment of sending. It says nothing about a message a customer received from an attacker who never touched your infrastructure. Those are two different problems, and the second is addressed further down this page and in the brand protection use case.
Send-path check and batch screening
# One hostname, inline in the send pipeline
curl "https://phishingdetectionapi.com/api/v1/check?domain=track.example-carrier.com&apikey=YOUR_KEY"

# All distinct hostnames from a rendered template, or a batch of seller URLs.
# Maximum 100 domains per request, one credit per domain.
curl -X POST https://phishingdetectionapi.com/api/v1/batch \
 -H "Content-Type: application/json" \
 -d '{"apikey":"YOUR_KEY","domains":["track.example-carrier.com","returns.example-3pl.com"]}'

# Response shape used by the send-hold rule
# {"domain":"..","is_phishing":true,"category":"..","dns_status":"..",
# "last_checked":"..","confidence":0.98,"database_size":390000}
What sits underneath

A live population of hosts, not an archive of complaints

The reason this is usable inline, in a pipeline that cannot afford noise, is the admission standard for getting into the database at all.

A list assembled from everything anyone has ever reported becomes less useful every month it exists. Most of the entries describe hosts that stopped answering long ago, so a match tells you very little and a high proportion of your alerts concern something that is no longer happening. Wire that into a checkout flow or a send-hold rule and you will be turning it off within a fortnight, because the operational cost of investigating dead entries exceeds the value of the live ones.

This database is built the other way round. Inclusion requires the domain to be currently resolving in DNS, the whole thing is rebuilt every twenty-four hours, and entries that stop resolving are dropped rather than retained — so the 390,000-plus figure describes a live population rather than a cumulative total. A match therefore means something specific and current: this hostname was verified as resolving and confirmed as hosting phishing on a dated build. That precision is what makes it safe to act on automatically in a pipeline where a false hold costs you an order.
The daily changelog supports the parts of the programme that run offline. Fraud and security teams intersect the day's additions against the hostnames seen in yesterday's traffic, ticket bodies and abuse reports, which surfaces campaigns aimed at your customers without anybody having to go looking. The removals close out cases that ended on their own. For network-level deployment the complete database is available as CSV on a separate subscription, which suits a resolver, firewall or SIEM far better than per-query lookups do.
ResolvingEvery entry answered a DNS query, not merely a complaint form
Rebuilt dailyA full regeneration every twenty-four hours, not an append-only log
DiffedAdded and removed lists let you alert on what actually changed
Bulk-readyThe complete database as CSV for resolvers, firewalls and SIEM
Inbound screening

URLs other people give you, before they render under your logo

Sellers, merchants, reviewers and customers all hand you hostnames. Every one of them will be displayed to somebody else on a page carrying your brand.

At submission

The onboarding form, where rejecting a URL costs nothing

A new seller supplies a storefront address, a returns policy link, a support site, sometimes a social profile. Check each of them before the account is approved. A match is not automatically a reason to refuse the application — a small merchant's site can be compromised without their knowledge, and telling them so is a better outcome than a silent rejection — but it is unambiguously a reason to hold for review rather than approve into a queue nobody looks at again.

On a schedule

Re-checking matters more than the initial check

A URL that was clean at onboarding can point somewhere entirely different eighteen months later: the domain lapses and is re-registered, the site is compromised, or the seller swaps the destination once their account has accumulated ratings. A scheduled sweep of every stored merchant hostname through the batch endpoint turns a one-off gate into an ongoing control — fifty thousand seller URLs re-screened monthly is fifty thousand credits, which the $249 package covers twice over.

In the write path

User-generated content is the same problem with less structure

Product descriptions, storefront copy, buyer reviews, Q&A answers and seller messages can all carry links, and every one of them renders on a page carrying your brand above the fold. Screen server-side at submission so a phishing destination never reaches the page at all — in the write path, not in a nightly cleanup job, because the window between publication and cleanup is exactly when the content gets seen.

In the ticket

Support is the underrated one

Customers routinely paste the suspicious link straight into a ticket or a chat, and "is this from you?" is one of the most common contact reasons a retailer has. Running an automatic check at ticket creation puts a dated verdict in front of the agent instead of asking them to make a security judgement between two other conversations. It shortens the reply and makes the answer consistent across a team of hundreds.

In the aggregate

And then the ticket data becomes the early-warning system

Those support matches quietly produce the most valuable dataset you have about campaigns aimed at your own customers. Aggregate a week of them and you know which of your brands is being impersonated and which lure is currently working — better early warning than anything you could buy, and it arrives as a by-product of answering tickets you were answering anyway. The helpdesk and support use case covers the ticket-side workflow in more detail, and multi-vendor operators will recognise the onboarding pattern from the online marketplaces use case, where the same check runs against far higher volumes.

1
Credit per lookup
100
Domains per batch call
$0.0025
Per lookup at $249
12 mo
Credit validity
Who is buying this

Three commerce businesses, three very different exposures

The same lookup is doing progressively more work as the number of parties who can put a URL into your system grows.

It is worth being clear about which of these you are, because the answer determines where the check pays back first and how much volume you should budget for. A single-brand retailer is defending its own customers against imitation of one identity. A marketplace is defending buyers against thousands of independent sellers, some fraction of whom are compromised or hostile. A commerce platform is defending other companies' customers on infrastructure it operates but does not control the content of — the hardest position of the three, and the one where the daily feed usually beats per-lookup billing.

One storefront

Single-brand retailer

You control every link you send and every page you render, so outbound screening is close to complete coverage of what you can influence. The exposure is impersonation: clones of your storefront, fake dispatch mail carrying your logo, and gift-card lures using your brand.

Where to start: the send pipeline and the support queue. Volume is modest, a mid-size package lasts a long time, and the ticket-side matches tell you which campaigns are live against your customers right now.
Many sellers

Multi-vendor marketplace

Thousands of independent sellers supply URLs at onboarding, in listings, in storefront copy and in buyer messages. Any of those can point somewhere hostile, and everything renders on pages carrying your name rather than theirs.

Where to start: screen at submission, re-screen on a schedule, and watch for seller account takeover — a compromised seller with good ratings is worth far more to an attacker than a new fraudulent account.
Many merchants

Commerce platform provider

You host storefronts for merchants who own their own domains, brands and customer relationships. Their customers are phished using their brands, and the complaints and the outage-shaped consequences still arrive at your support desk.

Where to start: not with per-lookup billing, which stops being the right shape at this scale. The daily CSV feed loaded locally covers merchant-domain sweeps, egress filtering and log correlation without a per-query cost.
Evidence and limits

What a verdict proves, and what it deliberately does not

A control you can act on automatically has to be one you understand precisely. Here is what each answer means before you build a rule on it.

What a match gives your team

A match states that this exact hostname was verified as resolving in DNS and confirmed as hosting phishing content on a dated build, with a category and a confidence value attached. It is an observation, made independently of whoever reported the link to you.

  • Strong enough to hold a send before the queue accepts it.
  • Strong enough to block a form submission or flag a seller account for review.
  • Strong enough to attach dated evidence to a takedown request.
But not a legal determination about the registrant, and it does not tell you who put the content there — a compromised small business and a purpose-built attack domain both appear in exactly the same way.

What a clean result does not mean

A clean result means the hostname is not on today's list. It is not a safety rating, a reputation score, or a judgement about a page nobody has yet examined. Treating it as an endorsement is the single most common way teams misuse a known-bad list.

  • A domain registered this morning and used for the first time this afternoon will not be there.
  • A kit served only to visitors from one country, or only behind a one-time link, may never be observed at all.
  • Content living at a path on an otherwise ordinary host can be live while the hostname itself looks unremarkable.

So where does it actually sit in your defences?

It is a floor, and a floor is worth having. Everything already confirmed as live phishing infrastructure becomes cheap to identify and consistent to act on across every team that touches a URL — marketing operations, seller onboarding, trust and safety, fraud, and the support desk. That consistency is most of the value: the same answer, from the same source, at every crossing point, instead of six teams each making a judgement call.

  • Velocity and device signals in the checkout flow.
  • Payout-change controls on seller and merchant accounts.
  • Card-testing detection, and rate limits on gift-card balance checks.
  • Human review of anything that still looks anomalous afterwards.
A known-bad lookup makes those layers cheaper to run by removing the confirmed cases from their workload. It does not replace them, and anybody selling it to you as a complete defence is overselling it. Retailers building the wider programme usually read this alongside e-commerce and retail and the payment processors use case.
Before you integrate

What commerce and trust-and-safety teams ask

Seven questions that come up in nearly every evaluation, answered without the marketing layer.

Will this slow down our checkout or our send pipeline?

A single lookup typically returns in under fifty milliseconds, which is comfortably inside the budget of a form submission or a template render. In practice the number of calls is far lower than the number of transactions, because the distinct hostname count in a retail send is small and a short-lived cache keyed on the hostname absorbs the repetition.

For anything in the customer's critical path, build it as a non-blocking check with a timeout and a defined fallback: if the lookup does not answer in time, proceed and log it for the asynchronous sweep. A screening control should never be the reason an order fails to complete.
How do we size a monthly plan for peak season?

Count distinct hostnames rather than messages or page views, then add your seller-URL re-screening volume and your support-ticket rate. Most retailers find the real number is one or two orders of magnitude below their first guess, because caching collapses templated sends.

  • Credits stay valid for twelve months, so buying for the fourth-quarter peak and running the remainder down across the rest of the year is a reasonable pattern.
  • Packages run from Growth at $99/month for 25,000 lookups lookups through $99/month for 25,000 lookups, Professional at $249/month for 100,000 lookupsand $499/month for 250,000 lookups, up to Enterprise at $999/month for 750,000 lookups.
  • The pricing page lists every tier and the per-lookup rate each one works out at.
Does this find clone storefronts impersonating our brand?

Only where the clone's hostname has already been observed resolving and confirmed as phishing, which is a meaningful fraction but not all of them. This is a known-bad list, not a discovery service that generates candidate look-alike names from your trademark.

The practical technique: take candidate hostnames from wherever you already collect them — support tickets, customer reports, advertising-platform complaints, your own domain-variant watchlist — and run them through the batch endpoint for a verified answer. That gives you dated evidence to attach to a takedown request. The brand protection use case covers that workflow properly.
Are we protecting our platform or our customers?

Different integration points do different jobs, and it is worth being deliberate about which of them you are funding.

  • Your estate: outbound screening and network-layer blocking protect your own infrastructure and the integrity of your stream.
  • Your pages: seller-URL and user-content screening protect customers from things that would otherwise render under your logo.
  • Your customers, everywhere else: support-ticket screening covers attacks that never touched your infrastructure at all — the message came from an attacker, and the only reason you can help is that the customer showed it to you.
That last category tends to be the one executives care most about once it is explained, because it is the one that shows up in reviews and on social media.
What happens when a legitimate merchant's site is on the list?

Assume it will happen, because compromised small-business sites are a large share of live phishing hosting. The right response is to hold the account for review and notify the merchant with the specific hostname and the date it was observed, not to terminate silently. You are frequently the first party to tell them they have been breached.

Build the appeal path at the same time as the rule. Because entries drop out when they stop resolving, a merchant who cleans up can be re-checked against a subsequent build and the observation will have gone — which gives you a dated, external basis for reinstating them rather than a judgement call.
Can we use this on our website, in client-side JavaScript?

No. The API key is passed as a query parameter or in the POST body, so putting a call in browser code exposes it to anyone who opens the network tab, and your credit balance becomes somebody else's. Every integration described on this page is server-side.

If you want a customer-facing link checker, put a thin endpoint of your own in front of it: your page calls your backend, your backend holds the key, calls the API, applies your own rate limit and returns the verdict. That also lets you log which links your customers are worried about, which is worth having on its own.
When should we move from the API to the daily feed?

When you want the whole list locally rather than an answer per question. The feed is the complete database as CSV on a separate subscription, with the added and removed changelog alongside it, and there are three typical triggers for moving to it.

  • Network-level enforcement across your own estate, at the resolver or the firewall.
  • Sweeping a very large merchant or seller domain inventory every single day.
  • Correlating historical traffic and log data against the list offline.
Most commerce businesses of any size end up running both — the feed for bulk and network work, the API for inline checks in send pipelines, onboarding forms and support tooling. The daily feed page covers delivery, and the API documentation covers the endpoints.

Verify every link before your customer has to guess

Put a check in the send pipeline, on the seller onboarding form and in the support queue, and the confirmed phishing destinations stop reaching the people who trust your brand. Start with a monthly plan sized to your distinct-hostname volume, or take the whole database daily if you need it locally.