Audit partners
Turn the list of partners who went dark into a set of ready-to-send, personalized nudges, so re-engagement actually happens instead of sitting on a to-do list.
A prompt that finds your inactive affiliates, sorts them by who's worth winning back, and drafts a tailored re-engagement message for each tier, ready for you to review and send through Everflow's Communication Hub. It reads your data (no writing, no risk) and hands you copy-paste-ready outreach. Run it on demand, or on a schedule so quiet partners get a nudge before they're gone for good.
Finding the partners who’ve gone quiet is only half the problem. Actually reaching back out is the half nobody has time for.
Every program has a tail of affiliates who onboarded, sent traffic for a while, and drifted off. Reactivating a partner you already have a relationship with is far cheaper than finding a new one. But even once you know who went quiet, writing and sending forty individual re-engagement messages is the work that never happens, so the list sits there and the partners keep drifting. Everflow includes a partner-messaging surface, the Communication Hub, with audiences, templates, and scheduling.
We onboard a lot of partners who send traffic for a while and then drift off. A lot of these have been inactive for months.
One universal foundation prompt that loads Everflow's API context into any AI.
# 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.txtSame prompt across Claude, ChatGPT, and Gemini. It finds your inactive affiliates, tiers them, and drafts a personalized re-engagement message for each, ready to send through the Communication Hub.
No MCP yet? The same prompt writes a read-only script. Replace {API_KEY} and {NETWORK_ID}. The API has no partner-messaging send endpoint, so the drafts go to the Communication Hub to send (a human step).
## SETUP — Read the Everflow API spec first
Fetch https://developers.everflow.io/llms.txt and the reference pages it links (endpoints, paging,
rate limits, the per-domain openapi/*.yaml files). It is the authoritative catalog. Do NOT use
developers.everflow.io/api-reference/openapi.json — it is a placeholder and does not describe Everflow.
The endpoint bodies and caveats below are verified against the live API; where they differ from your
reading of the docs, the caveats below win.
# role
You are a partner-operations assistant. Build an inactive-affiliate re-engagement
worklist plus drafted outreach, using Everflow's read-only API.
# how to pull each piece
- Active roster + tenure: POST /v1/networks/affiliatestable (status=active). This one DOES
paginate correctly - page the roster here.
- Activity in the window: POST /v1/networks/reporting/entity/table, columns [{column:"affiliate"}].
Test the METRICS, not membership: this table DOES return zero-activity affiliates as all-zero
rows, so "roster MINUS everyone who appears" silently drops them. Inactive = total_click 0 AND
total_cv 0.
currency_id is REQUIRED - omit it and the call returns 400, because default_currency_id is empty
on the account.
This endpoint also IGNORES page and page_size and returns no next_cursor, has_more or
result_capped, so never read its row count as proof the answer is complete.
- Lifetime value for tiering: same call from a long start date, sort by payout desc.
- Contact emails: GET /networks/affiliateusers.
Then apply the same filters, tier HIGH/WATCH/OFFBOARD, and DRAFT one message per partner.
Seasonal means NO activity in the same window LAST year either - a partner who sent traffic in
this window last year and none now is a real decline, not a seasonal pattern.
Read-only: never POST anything back.No MCP yet? The same prompt writes a read-only script. Replace {API_KEY} and {NETWORK_ID}. The API has no partner-messaging send endpoint, so the drafts go to the Communication Hub to send (a human step).
## SETUP — Read the Everflow API spec first
Fetch https://developers.everflow.io/llms.txt and the reference pages it links (endpoints, paging,
rate limits, the per-domain openapi/*.yaml files). It is the authoritative catalog. Do NOT use
developers.everflow.io/api-reference/openapi.json — it is a placeholder and does not describe Everflow.
The endpoint bodies and caveats below are verified against the live API; where they differ from your
reading of the docs, the caveats below win.
# role
You are a partner-operations assistant. Build an inactive-affiliate re-engagement
worklist plus drafted outreach, using Everflow's read-only API.
# how to pull each piece
- Active roster + tenure: POST /v1/networks/affiliatestable (status=active). This one DOES
paginate correctly - page the roster here.
- Activity in the window: POST /v1/networks/reporting/entity/table, columns [{column:"affiliate"}].
Test the METRICS, not membership: this table DOES return zero-activity affiliates as all-zero
rows, so "roster MINUS everyone who appears" silently drops them. Inactive = total_click 0 AND
total_cv 0.
currency_id is REQUIRED - omit it and the call returns 400, because default_currency_id is empty
on the account.
This endpoint also IGNORES page and page_size and returns no next_cursor, has_more or
result_capped, so never read its row count as proof the answer is complete.
- Lifetime value for tiering: same call from a long start date, sort by payout desc.
- Contact emails: GET /networks/affiliateusers.
Then apply the same filters, tier HIGH/WATCH/OFFBOARD, and DRAFT one message per partner.
Seasonal means NO activity in the same window LAST year either - a partner who sent traffic in
this window last year and none now is a real decline, not a seasonal pattern.
Read-only: never POST anything back.No MCP yet? The same prompt writes a read-only script. Replace {API_KEY} and {NETWORK_ID}. The API has no partner-messaging send endpoint, so the drafts go to the Communication Hub to send (a human step).
## SETUP — Read the Everflow API spec first
Fetch https://developers.everflow.io/llms.txt and the reference pages it links (endpoints, paging,
rate limits, the per-domain openapi/*.yaml files). It is the authoritative catalog. Do NOT use
developers.everflow.io/api-reference/openapi.json — it is a placeholder and does not describe Everflow.
The endpoint bodies and caveats below are verified against the live API; where they differ from your
reading of the docs, the caveats below win.
# role
You are a partner-operations assistant. Build an inactive-affiliate re-engagement
worklist plus drafted outreach, using Everflow's read-only API.
# how to pull each piece
- Active roster + tenure: POST /v1/networks/affiliatestable (status=active). This one DOES
paginate correctly - page the roster here.
- Activity in the window: POST /v1/networks/reporting/entity/table, columns [{column:"affiliate"}].
Test the METRICS, not membership: this table DOES return zero-activity affiliates as all-zero
rows, so "roster MINUS everyone who appears" silently drops them. Inactive = total_click 0 AND
total_cv 0.
currency_id is REQUIRED - omit it and the call returns 400, because default_currency_id is empty
on the account.
This endpoint also IGNORES page and page_size and returns no next_cursor, has_more or
result_capped, so never read its row count as proof the answer is complete.
- Lifetime value for tiering: same call from a long start date, sort by payout desc.
- Contact emails: GET /networks/affiliateusers.
Then apply the same filters, tier HIGH/WATCH/OFFBOARD, and DRAFT one message per partner.
Seasonal means NO activity in the same window LAST year either - a partner who sent traffic in
this window last year and none now is a real decline, not a seasonal pattern.
Read-only: never POST anything back.MCP mode: the agent calls Everflow directly, no API key to paste. It is read-only, so it finds and drafts; you send through the Communication Hub.
## STEP 0 — Ingest the Everflow docs first
Before anything else, fetch and read https://developers.everflow.io/llms.txt and the reference pages it links (limits, tool + endpoint references, the OpenAPI spec). It is the authoritative catalog of what Everflow exposes — and it documents fields and hard caps that live in the REST API but NOT the MCP (e.g. redirect_url is REST-only; run_performance_report caps at 500 rows and sets result_capped:true). Treat it as ground truth for what's available, and fall back to the REST API for anything the MCP doesn't expose.
# role
You are a partner-operations assistant for a program on Everflow. Use the Everflow
MCP tools (read-only) to find inactive affiliates and DRAFT re-engagement outreach.
You do not send anything; you hand me ready-to-send copy.
# inputs (edit to your program)
inactive_window_days = 30 # 14 for mobile installs, 60 for longer e-com cycles
exclude_new_days = 30
# steps
1. get_account_info - confirm currency + timezone.
2. list_affiliates(status=active), paginate the full roster.
3. run_performance_report(dimensions="affiliate", from=today-inactive_window_days, to=today,
metrics="clicks,conversions"). Test the METRICS, not membership. The report DOES return
zero-activity partners as all-zero rows, so "roster MINUS everyone who appears" silently
drops the very partners you are hunting. A partner is inactive when clicks = 0 AND
conversions = 0, whether or not they have a row.
4. Drop + list separately: newer than exclude_new_days, postback-only partners, and seasonal
partners - where seasonal means NO activity in this same window LAST year either. Read that
carefully, it is the opposite of the obvious test: a partner who DID send traffic in this
window last year and sends none now is not seasonal. That is a real decline, and they are
exactly who this recipe is for.
5. Tier the rest by lifetime conversions + payout: HIGH / WATCH / OFFBOARD.
6. get_affiliate(include="activity,users") per HIGH/WATCH: last-active date, manager, and
the partner's contact emails.
7. DRAFT one short, personal re-engagement message per partner, varied by tier. Each:
subject + body under ~120 words, one clear ask, no performance claims,
a {tracking_link} placeholder for the Hub to fill.
# output
A table (affiliate | tier | last active | contact email | manager) plus the drafted
message per partner, grouped by tier.
# guardrails
- Read-only. Never send anything. Do not message paused / new / seasonal partners.
- One nudge, respect opt-out. I review every message before it goes out.
## Pagination (required)
run_performance_report returns 100 rows/page and caps at 500 rows total. Always pass page_size=100 and loop: re-call with cursor set to the previous response's next_cursor until has_more is false. If result_capped is true, narrow the date range or add a filter and note the truncation in the output — an un-paginated call silently returns only the first page and will miss the partners this recipe exists to surface.
IMPORTANT: the REST equivalent does NOT paginate. /networks/reporting/entity/table ignores page and page_size and returns no next_cursor, has_more or result_capped — ask it for 5 rows and it hands back the whole table. On ten partners that looks fine; on a real roster you cannot tell a complete answer from a truncated one. /networks/affiliatestable DOES paginate correctly, so page the roster there and use entity/table only for the activity lookup.Run the Foundation Prompt
It loads Everflow's API context so your AI knows the calls and the docs.
Say what "inactive" means for you
Set the window (30 days is the default, 14 for mobile installs, 60 for longer e-com cycles) and note anything to exclude.
Connect the Everflow MCP, or grab a read-only API key
With the MCP connected there is nothing to paste. No MCP yet? Generate a read-only key in Core Platform, then Control Center, then Security, then API Keys.
Run the prompt
You'll get back a tiered list of inactive affiliates, their contact emails, and a drafted re-engagement message for each one.
Review, then send through the Communication Hub
Build an Audience of your inactive affiliates, paste each drafted message into a Template or a General / Offer Details Message, and send or schedule it. You approve every message before it goes out.
Your call. The default is any active affiliate with no clicks or conversions in the last 30 days, minus the false positives (brand-new, intentionally paused, seasonal). Set the window to fit your sales cycle.
No. The prompt starts from your active roster, so paused, suspended, and pending accounts are already out, and it separates brand-new and seasonal partners before drafting a single message.
You approve first. The AI finds and drafts; you review and send through the Communication Hub. Everflow's API has no partner-messaging send endpoint, so the send is a native step by design.
The send is native, on purpose. Everflow's API and MCP are read-only for partner messaging, so this recipe stops at drafted, ready-to-send copy and hands off to the Communication Hub. That is the right shape for partner-facing outreach: a human should see it before it goes.
Don't over-message. One nudge, then wait. Respect any partner communication preference or opt-out.
Seasonal partners aren't dormant, and the test runs the opposite way round to the obvious one. A partner who only runs in Q4 looks quiet in July, but they were quiet last July too. That repeat is the signal: if they were also silent in this same window last year, it is their pattern rather than a lapse, and they stay off the list. The reverse case is the one worth your time. A partner who did send traffic in this window last year and sends none now has genuinely declined, and is exactly who this recipe exists to find.
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.
One Tuesday email. Latest industry news plus new recipes the day they ship. Unsubscribe in one click.
Share what's working with the Everflow API. Our team will reach out about details, timelines, and next steps.