AI Playbook/Recipe

Theme

Sync your Everflow data to Google Sheets every morning

Daily sync that appends yesterday's Everflow performance per affiliate and offer to a Google Sheet you control — set it up once, wake up to live data.

For
AM, Ops, Finance, Founders
In
e-com, lead-gen, financial services, SaaS, iGaming, mobile, agency
Dasha Dagayeva
Jordan Barney
Assoc. Director of Content Operations
30 min

Medium

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
01

Quick Answer

A copy-paste prompt that pulls yesterday's performance data from the Everflow API and appends it as a new row in a Google Sheet you control — clicks, conversions, revenue, payout, and EPC per affiliate and offer, every day, without you touching it. Set it up once. Wake up to a live sheet.

Everflow, Google Sheets, Apps Script
This prompt uses
02

The Pain

The dashboard's in Everflow. The business runs on Sheets. Finance reconciles in Excel. Ops builds the weekly review in Google Sheets. The data team queries BigQuery. The agency's report-builder is in Looker. Everflow already supports Scheduled Reports — pick your columns, pick your cadence, get the report attached to an email. Great for getting yesterday's snapshot delivered.

What customers ask for next is different: a row-level append, not a daily snapshot replacement. They want yesterday's per-affiliate, per-offer performance to append to the bottom of a sheet, building into a queryable history their pivot tables, dashboards, or AI agents can read. Scheduled Reports replaces the file each time. This recipe appends.

The destination is the choice that matters. Google Sheets is the lowest-friction option — most customers already have one — but the same prompt swaps the auth + endpoint and writes to Excel/OneDrive (Microsoft Graph), Notion, Airtable, or a warehouse (BigQuery, Snowflake) without changing the data shape. The win is one clean ETL endpoint customers can point at whatever lives downstream.

Stat
Everflow data lives in spreadsheets one way or another for most customers. 1,939 Gong calls mention CSV, 545 mention spreadsheet, 222 specifically say Google Sheets — and 556 mention BigQuery. The pain isn't picking a tool; it's getting the data out cleanly every day.

...providing API endpoints so that you can export data from Everflow and then leverage it, you know, leveraging the reports that you do maybe in like a Google Sheet or something like that, so that you can export that data to your reports.

Performance marketing agency (mid-size)
02b

Foundation Prompt

Set this once. Reuse across every recipe.

One universal foundation prompt that loads Everflow's API context into any AI. Paste it once, then run any recipe on top of it. Ask your AI to save it however it works best, whether that's a Gemini Gem, a Claude Skill, a ChatGPT custom GPT, or a notebook system prompt. Same content, your AI's format.

~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. Defaults to yesterday's data; swap the date range for any historical pull. This is the most setup-heavy recipe in the playbook — service-account auth takes ~10 minutes the first time, then never again.

v1.0 · tag

# role
You are a data pipeline assistant connecting Everflow to Google Sheets.

# inputs
api_key              = {API_KEY}
network_id           = {NETWORK_ID}
spreadsheet_id       = {SPREADSHEET_ID}   # from the Sheet URL: /d/{SPREADSHEET_ID}/edit
sheet_name           = {SHEET_NAME}       # tab name, e.g. "Daily Data"
service_account_json = {SERVICE_ACCOUNT_JSON}  # paste the full JSON key content

# task
1. Compute yesterday's date range:
     from = yesterday at 00:00:00
     to   = yesterday at 23:59:59

2. POST /v1/networks/reporting/entity
     body: {
       from: "{from}", to: "{to}",
       columns: [{ column: "affiliate" }, { column: "offer" }],
       query: { filters: [], exclusions: [] },
       sort_columns: [{ column: "revenue", direction: "desc" }],
       timezone_id: 80, currency_id: "USD"
     }
   → Returns clicks, conversions, revenue, payout grouped by affiliate + offer.

3. For each row, compute:
     cvr = conversions / clicks * 100    (set to 0 if clicks = 0)
     epc = revenue / clicks              (set to 0 if clicks = 0)

4. Authenticate to Google Sheets using {service_account_json}.

5. Append one row per affiliate+offer combination to the Sheet:
     A: date (YYYY-MM-DD, yesterday)
     B: affiliate name        F: cvr (2 decimals, as a number)
     C: offer name            G: revenue (whole dollars)
     D: clicks                H: payout (whole dollars)
     E: conversions           I: epc (2 decimals)

6. After appending, return summary: "Appended {N} rows for {date} to {sheet_name}.
   Total: {clicks} clicks · {conversions} conversions · ${revenue} revenue."

# guardrails
- Skip rows where clicks = 0 AND conversions = 0 AND revenue = 0.
- Round revenue/payout to whole dollars; CVR/EPC to 2 decimals.
- Auth error from Sheets API: return "Auth failed — check that the service account has Editor access to the Sheet."
- If Everflow returns no data (holiday, network pause), append a single "No data" row so the Sheet records the sync ran.
- Always append to next empty row, never overwrite.
- Timezone: use network timezone (America/New_York default).
04

The Steps

Generate an Everflow API key

Core Platform → Control Center → Security → API Keys → click the + API key button. Read-only on Reporting is enough.

Set up a Google Sheets service account

Go to console.cloud.google.com → create a project → enable the Google Sheets API → create a service account → download the JSON key file. This is a one-time setup. The JSON key file is what authenticates the AI agent to write to your Sheet.

Create and share your Google Sheet

Create a new Sheet (or use an existing one). Share it with the service account email address from step 2 (it looks like your-account@your-project.iam.gserviceaccount.com). Give it Editor access. Add a header row in row 1: Date | Affiliate | Offer | Clicks | Conversions | CVR | Revenue | Payout | EPC

Paste your credentials into the prompt

Replace {API_KEY}, {NETWORK_ID}, {SPREADSHEET_ID} (from the Sheet URL), {SHEET_NAME} (the tab name), and {SERVICE_ACCOUNT_JSON} in the block below.

Schedule it daily

Drop into Google Apps Script, Make, or Zapier. Trigger at 6 AM so overnight data has settled and the Sheet is ready before your team's day starts.

05

Sample Output

EF · Daily Data · May 2026Saved
Share
File  ·  Edit  ·  View  ·  Insert  ·  Format  ·  Data  ·  Tools
|BIU|$%Filter
G2|fx$7,200
ABCDEFGHI
1DateAffiliateOfferClicksConv.CVRRevenuePayoutEPC
22026-05-13Loyalty cashback networkStarter Kit Bundle4,8201442.99%$7,200$3,600$1.49
32026-05-13Health content publisherSubscribe & Save3,9101172.99%$5,850$2,925$1.50
42026-05-13Email specialistStarter Kit Bundle2,340702.99%$3,500$1,750$1.50
52026-05-13Native content partnerGift Set1,770532.99%$2,650$1,325$1.50
Daily Data+ Add sheet
06

FAQ

Real questions, real answers
Why a service account instead of just my Google login?

A service account runs without a human being logged in — it's what lets the sync run automatically at 6 AM without you clicking "authorize" every day. It takes about 10 minutes to set up once and never needs to be touched again.

Is the JSON key file sensitive?

Yes — treat it like a password. Don't paste it into a shared doc or commit it to a public repo. When running in Make or Zapier, store it in the credential vault, not in the prompt text. When running in Apps Script, store it as a Script Property.

Can I pull more than one day at a time?

Yes. Change the date range in the prompt: from = 7 days ago, to = yesterday for a weekly backfill. Useful for the first run when you want to populate the Sheet with historical data before the daily sync takes over.

06b

Notes & counter-cases

Edge cases, gotchas, and things to watch.

Swap the destination. Same prompt body works for any append-target — change the auth + destination call:

  • Excel / OneDrive: Microsoft Graph API POST /workbook/tables/{tableId}/rows/add
  • Notion: POST /v1/pages with database parent
  • Airtable: POST /v0/{base}/{table}
  • BigQuery: tabledata.insertAll or scheduled query
  • Snowflake: INSERT INTO ... VALUES via the Snowflake REST API or SnowSQL

Google Sheets is the lead destination because it's the lowest-friction (most customers already have one + the Google Sheets API is free + Apps Script handles the auth). Pick the destination that lives next to whatever consumes the data.

Native Scheduled Reports differentiation. Native covers "email me a saved report on a schedule" — great for inbox delivery of a snapshot. This recipe is for row-level append so the destination accumulates queryable history. If you need a snapshot CSV, use native. If you need a growing table for pivots / AI dashboards / forecasts, use the recipe.

UI vs export discrepancies. Reporting page totals sometimes differ from API exports by small percentages due to in-flight conversions, attribution windows, or pending scrubs. For finance-grade reconciliation, pull a wider window (last 30 days) once a month and compare against the partner's settled invoice.

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.