AI Playbook/Recipe

Spot risks early

How do I find out which partner got my tracking domain blacklisted?

When a domain gets flagged, the question is always the same one and it is usually unanswerable. This answers it, and shows you what is riding on that domain before you decide what to do about it.

Copy
Copy & export
Copy link
Plain page URL.
Copy page as Markdown
Full recipe content for LLMs
Open in AI
Open in Claude
Recipe prefilled.
Open in ChatGPT
Recipe prefilled.
Open in Gemini
Recipe prefilled.
Open-in actions need you logged into your Claude / ChatGPT / Gemini account in this browser. Not logged in? Copy as Markdown and paste it in.
Share
Dasha DagayevaEverflow
Dasha Shareyko
Product Education Manager
~15 min to ship

Medium

LinkedIn
COMMUNITY RECIPE · SUBMITTED BY
Gaia, Inc
LinkedIn
~15 min to ship
Medium
https://www.linkedin.com/in/dasha-shareyko-d-778b82120/
01

Quick Answer

A prompt that reads which of your domains and IPs are currently listed, then for each one pulls how much traffic and payout rode on that domain over the last 90 days and names the partners on it, so you can see who is exposed and by how much before you touch anything. It reports the listing, not a verdict, and it does not contact anyone or change anything.

Everflow, Slack
This prompt uses
02

The Pain

Several partners share one domain, so a single bad traffic source takes everyone down with it. A founder at a performance agency described being listed by a broadband provider, traced it back to one partner sending clicks that triggered it, and summed up the part that stings: they were not even at fault. A partner lead at another agency put the mechanic plainly. If a group of partners drive traffic to a domain and one of them causes it to get flagged, it creates a problem for everybody else.

Knowing you are listed is not the hard part. Knowing who is the hard part. Without partner-level detail your only lever is to move the domain, and moving the domain is worse than the flag. Every partner has to update every link they have placed, and an affiliate program manager pointed out those links can be sitting on thousands of pages. So the report you actually need is not "you are listed", it is "you are listed, here is the URL that got picked up, here are the partners on this domain, and here is what they are worth."

The other half of the problem is what it costs while you work it out. Traffic through a listed domain does not stop cleanly, it degrades. One of our own people described it as a soft revenue leak: the link interacts with a platform using the blacklist, the click never lands, and it can look like the offer is simply running 25% lower than it should. Nothing errors. Nothing alerts. It just quietly underperforms until somebody asks why.

The pattern
About 1 in 20 customers we talk to raise domain blacklisting, domain reputation or domain downtime on a call. When they do, the first question is nearly always the same one: which partner caused it.

That was the issue we ran into. We have no idea what affiliate it is. If we get that full link, we could probably work backwards and figure out which affiliate, which campaign, and then have a conversation with them.

VP of growth, supplements and longevity DTC brand
02b

Foundation Prompt

Set this once. Reuse across every recipe.

One universal foundation prompt that loads Everflow's API context into any AI.

~55 lines · ~340 tokens
# Everflow API Foundation Prompt

## Role & Objective
You are an Everflow API specialist. Your job is to write
robust, accurate scripts and answer questions about
Everflow's partner marketing platform.

## Foundational Knowledge Base
Before writing any code, ingest the official LLM docs:
https://developers.everflow.io/llms.txt
03

The Prompt

Same prompt across Claude, ChatGPT, and Gemini. It reads your plan level before anything else, keeps each check in its own call so one unavailable block can never take down the rest, and treats an empty result and an unavailable check as two different things. Even on the paid level that distinction still matters: a domain outside your monitored quota can come back looking exactly like a clean one.

Same logic, REST instead of MCP. Two meaningful differences. REST exposes the plan-level endpoint GET /v1/networks/traffic/access, which the MCP does not wrap — it returns a richer plan picture (is_enabled, has_premium, has_blacklist_monitoring, premium_monitored_domain_quota, has_external_notifications), so you can gate precisely and see whether your quota covers every domain you have. And the partner list comes from the reporting API, not from Traffic Health — see step 4b.

# role
You are an Everflow domain-reputation assistant producing a standing report. Read-only.

# inputs
api_key        = {API_KEY}
network_id     = {NETWORK_ID}
slack_webhook  = {SLACK_WEBHOOK_URL}

# task
1. GET /v1/networks/traffic/access
   Read is_enabled, has_premium, has_blacklist_monitoring, premium_monitored_domain_quota,
   has_external_notifications.
   If is_enabled is false, stop and report the feature is not switched on for this account.
   If has_blacklist_monitoring is false, stop and report that reputation monitoring is not enabled,
   and point the reader at the standard-plan domain report. Do not produce a partial version.

2. POST /v1/networks/traffic/situation and POST /v1/networks/traffic/situation/domains
   The network rollup and the per-domain roster. Record each domain url EXACTLY as returned.
   Each roster row carries active_blacklist_incident_count plus a per-detector split:
   active_easylist_..., active_hetrix_tools_..., active_google_threat_intelligence_...
   A domain is flagged if active_blacklist_incident_count > 0. Note domain_type
   (tracking / conversion / third_party).
   Compare the roster size to premium_monitored_domain_quota. Domains outside the quota are not
   monitored and must not be reported as clear.

3. POST /v1/networks/traffic/domains/{domainUrl}/situation
   Per-domain detail: ownership, is_ip_flagged, time_expires, incidents[], and
   active_flags_count / removed_flags_count. Note the path shape — the domain is a PATH segment,
   not a body field, and the body is an empty object.

4. GET /v1/networks/traffic/assignments/{domainUrl}/summary
   This returns ASSIGNMENT COUNTS ONLY, and nothing else:
   active, assignable, offers_assigned, partners_assigned, combinations_assigned.
   That is how many offers and partners are CONFIGURED on the domain — the blast radius if you
   move or retire it. It is NOT traffic. There is no usage, click, payout or revenue block on this
   endpoint, and it returns no partner names. Do not report money from here and do not invent
   partner rows. Keyed on the domain URL, not a domain id.

4b. Name the partners, and size the exposure, from the reporting API.
   Traffic Health tells you a domain is flagged. It will not tell you who ran traffic on it, or how
   much. This does.
   POST /v1/networks/reporting/entity/table
   { "from":"<90 days ago>", "to":"<today>", "timezone_id":<tz>, "currency_id":"USD",
     "columns":[{"column":"tracking_domain"},{"column":"affiliate"}],
     "filters":[{"filter_id_value":"<the exact flagged url>","resource_type":"tracking_domain"}] }
   Filter to the flagged domain rather than pulling every domain: this endpoint caps at 500 rows and
   sets result_capped when it drops rows. Page until done and check that flag. A capped result is not
   an empty result, so never report "no partners" off one.
   Each row is one tracking-domain x partner pair carrying unique_click, gross_click, cv, payout,
   revenue. Keep only rows whose tracking_domain matches the flagged domain EXACTLY as Traffic
   Health returned it, then sort by payout descending. That is your partner list, and the summed
   clicks and payout are the 90-day exposure for that domain.
   This call needs a key with Reporting permission. A Traffic-Health-only key returns 403 here —
   if that happens, say the partner list could not be retrieved. Do not report the domain as having
   no partners.
   Compare the row count to partners_assigned from step 4 and EXPECT them to differ: assigned means
   configured to use the domain, reporting means actually sent traffic in the window. Assigned is
   the upper bound. Report both numbers rather than reconciling them.

5. Emit the report in this order: FLAGGED NOW, CLEARED, CHECKED-NOTHING-FOUND, NOT CHECKED.
   Post to slack_webhook.

# guardrails
- An empty response body is not a clean result unless you confirmed the check was available to run
  and the domain was inside the monitored quota.
- Present the flag and the partner list as separate facts. Do not label any partner, do not rank by
  suspicion, and do not state or imply a cause. A person decides that, not this report.
- Say plainly that the partner list comes from reporting, not from the flag. They are two datasets.
- Match domain urls exactly as the API returned them. Do not trim or add a www.
- Report only what you read. If a call failed, say the call failed. Do not infer a clean result from
  a failure.
- Read-only. Do not call any write endpoint. Do not request delisting, pause a partner, or change a
  domain assignment on the user's behalf.
04

The Steps

Connect the Everflow MCP, or grab an API key

If you have the Everflow MCP connected, there is nothing to paste. MCP is a connector that lets your AI tool talk to Everflow on its own. No MCP yet? Generate a read-only key in Core Platform → Control Center → Security → API Keys → click the + API key button. Read-only is enough, because this recipe only ever reads.

Confirm reputation monitoring is switched on

Everflow includes a feature called Traffic Health that watches the domains your tracking links run through. Its paid level adds the parts this recipe needs: it checks your domains and the IPs behind them against blacklist and threat-intelligence sources, and it covers domains you host yourself as well as the ones we manage. It also reports how much traffic and payout rode on each domain over the last 90 days, which is what sizes the exposure. The prompt reads your level first and stops if that level is not on, rather than reporting an empty result.

Turn the alerts on while you are in there

The same paid level sends notifications out to email, SMS, Slack or a webhook when something is detected. Turn them on. Every customer we have watched genuinely understand this product understood it through an alert rather than a dashboard, and only a small minority have notifications enabled at all. This recipe is the standing report that answers the follow-up question, which the alert does not: who is on the domain, and what is it worth.

Paste the prompt in and pick where it lands

With MCP connected, run the prompt as written. On the API tab, first replace {API_KEY}, {NETWORK_ID} and {SLACK_WEBHOOK_URL}, then run it. Send it to a channel a human owns. The pattern we see over and over is that an account manager notices and a developer or ops person acts, so put it somewhere both of them read.

Run it in Claude, ChatGPT, or Gemini

The first run gives you a baseline: what is currently listed, what has cleared, and which partners ran traffic on each domain over the last 90 days. Then it is a daily or weekly standing report. The same prompt works in any of the three.

05

Sample Output

Domains, partner IDs and figures below are illustrative.

#domain-alerts                                       Everflow Alerts · APP · 7:00 AM

Domain reputation — Thursday 31 July
Plan level: Traffic Health Premium
Domains covered: 14 (9 tracking, 3 conversion, 2 you host yourself)

FLAGGED NOW
  · go.example-offers.com
      Listed by Google Threat Intelligence, first seen 2026-07-28
      Listed URL: go.example-offers.com/click?oid=118&affid=4471&sub1=push_row3
      Partners that ran traffic on this domain, last 90 days (from the reporting API):
        Partner 4471      812,004 clicks     $41,900 payout
        Partner 2210       77,140 clicks      $3,050 payout
        Partner 9004        1,220 clicks         $60 payout
      Partner ID present in the listed URL: 4471
  · 51.0.113.24
      Listed by HetrixTools, first seen 2026-07-30
      Domains on this IP: go.example-offers.com, t.example-mail.com

MISMATCHES
  · t.example-mail.com — Partner 6132 is sending live traffic on this domain and is not assigned to it.

CLEARED SINCE THE LAST RUN
  · links.example-brand.com — no longer listed. Was flagged 2026-07-11.

CHECKED, NOTHING FOUND
  · The other 12 domains: no active domain or IP flags.
  · Uptime incidents: none active.

NOT CHECKED
  · Nothing was skipped.

The report names what is listed and who is on the domain. It does not say who caused it, and it is written not to guess. A partner can be the largest on a flagged domain and have nothing to do with the listing, and a listed URL can name a partner for entirely ordinary reasons. Common causes, most to least frequent: email or SMS traffic where recipients mark messages as spam, a partner routing traffic through a source with an existing poor reputation, a redirect chain that a scanner reads as suspicious, and a domain that is simply too new to have a history. When you do go to the partner, an approach we have watched work: do not open accusatory, open with what happened and what activity triggered it. Sometimes they need to change how their traffic is routed and did not know.

06

FAQ

Real questions, real answers
Will it tell me why the domain was flagged?

No. This is the most persistent question customers ask, and the honest answer is that the blacklist vendor owns the reason and does not publish it back. What you get instead is the detector that listed it, how much traffic and payout rode on that domain over 90 days, and — from a second call to the reporting API — the partners on it and what each is worth. That is usually enough for a person to work backwards to a campaign, which is the step people say they could never take before.

Does this work for domains I host myself, not with Everflow?

Yes, on this level of the feature, and it is often the reason people move up to it. If you run email or SMS from domains that do not live in Everflow at all, those are the domains most likely to pick up a listing, and they are invisible on the standard plan. Add them, and this report covers them alongside your tracking domains.

Can it get the domain delisted, or pause the partner?

No, and it will not try. Everything here is read-only. Delisting means contacting each vendor that listed you, which is a slow process they control. Pausing a partner is a decision with revenue attached and belongs to a person. This report changes when you find out and how much you know when you do, not what the fix costs.

06b

Notes & Counter-Cases

Edge cases, gotchas, and things to watch.

It does not fix anything. It only tells you. No delisting is requested, no partner is paused, no domain is swapped, no traffic is rerouted. If you want something that acts, this is not it. What it buys you is a named list of who is on a flagged domain, on the day it happens rather than three weeks later.

It will not tell you why. The blacklist vendor owns the reason. Anyone promising you a cause is guessing, including an AI reading this data. The report gives you the listed URL and the partner list and stops there deliberately.

Reputation refreshes daily, not hourly. The upstream threat feed is pulled once a day. Uptime is real time. If anyone has told you flags surface within the hour, that is not right.

A cleared flag can linger. Customers have gone through the delisting process, been cleared by the vendor, and still seen the domain reading as flagged afterwards. If somebody tells you they are already delisted, treat a stale flag as a data-refresh problem rather than a contradiction.

The largest partner on a domain is not the likely cause. The report sorts by payout because that is the exposure, not because it is a ranking of suspicion. Read the two columns separately.

It is insurance, and insurance is hard to justify. A customer who declined to renew put it well: things do not happen to their domains daily, and you do not know you need a monitor until something goes wrong. The same customer priced a generic domain monitor at under $100 a month. The honest counter is not that the generic monitor is bad. It is that the generic monitor does not know which of your domains carry live tracking links, or which partners are on them, which is the entire output of this recipe.

The alert is the part that changes behaviour, not the report. A media buyer said the quiet part out loud: if it requires going and looking all the time, we get busy and we do not go look. Turn the notifications on. Treat this report as the thing you read after the alert fires, not instead of it.

A shared tracking domain is the underlying risk. The recurring advice from our own account managers is to put larger partners, especially networks, on their own dedicated domain so they cannot affect the rest of your traffic, and to keep at least one clean domain in reserve. This report shows you which domains are shared, which is where that conversation starts.

Moving the domain is the expensive answer. Every partner has to update every link they have placed, and those links are hard-coded wherever they sit. Knowing which partner is on the domain is what lets you consider isolating one partner instead of reissuing the domain for everyone.

ASK US ANYTHING

Got a question this playbook hasn't answered yet?

Drop us the question you wish had a prompt. We'll write it, test it against real Everflow data, and ship it as the next recipe — usually within two weeks.

DJReviewed every Tuesday by Dasha & Jordan
NEWSLETTER

First dibs on new recipes

One Tuesday email. Latest industry news plus new recipes the day they ship. Unsubscribe in one click.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
×
Submit a recipe

Got a recipe of your own?

Share what's working with the Everflow API. Our team will reach out about details, timelines, and next steps.

Reviewed weekly · Author credit on every published recipe · We respond to every submission
Submit your idea and our team will reach out about details, timeline, and process.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
×
SHARE THIS RECIPE

Spread the playbook

LinkedIn no longer accepts pre-filled captions via URL. Two clicks: copy the caption below, then open LinkedIn and paste in the composer.

Your caption
Copy first, then open LinkedIn and paste in the composer.