Overview
Today's profit & loss across all accounts.
Contingency
Account-supply health — is it serving, its Google status, and the team's own tracking.
Connected accounts
| Account | Serving? | Google status | Status | Notes | Access |
|---|
Appeals
Suspended accounts, the reason Google gave, and an AI-drafted reinstatement appeal per account. Submission is manual — open the account in AdsPower and paste.
Suspended accounts
| Account | Google status | Suspension reason | Attempt | Appeal status | Updated |
|---|
Actions
Rule flags and every action taken — auto or manual.
Open flags
| When | Rule | Account | Entity | P/L (7d) | Spend | Sales | Decision |
|---|
Action log
| When | Source | Decision | Account | Entity | P/L | Mode | By |
|---|
Accounts
Connected ad accounts with account-level performance.
Connected accounts
| Account | Domain | Account ID | Status | Category | Cⓘ | Cost | CPC | CTR | Chkⓘ | C/Chkⓘ | Sales | Cost/Sale | ROAS |
|---|
Campaigns
All campaigns across connected accounts.
Campaigns
| Campaign | Account | Status | Type | Budget | tCPA | Cost | CPC | CTR | Conv. | Cost/Sale | ROAS |
|---|
Ads
Every creative across all accounts — disapproved & limited first.
| Status | Account | Account ID | Campaign | Ad group | Creative | Budget | Cost | CPC | Clicks | CTR | Connⓘ | P→Vⓘ | Chkⓘ | C.Cvⓘ | Sales | C/Chkⓘ | CPA | ROAS | YouTube URL |
|---|
Conversions
Every checkout & sale from your own tracking, with the click it came from.
| Time | Type | Offer | Account | Creative | Amount | Order | Product | Network | Click→Conv | Click ID | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||||
Vault
Bought aged Gmail / YouTube accounts. Paste the seller line, get live 2FA codes & one-click copy.
| Gmail | Password | Recovery | 2FA | Channel | Stats | Age | Company | Website | Status | Assigned | Notes | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||||||
Companies
Real Brazilian companies (CNPJ) for account identities — each is handed to one account only, never reused.
| CNPJ | Razão Social | Nome Fantasia | UF | Status | Assigned to | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Funnel
Server-side tracked: click → presell → VSL → checkout → sale, per offer (across all accounts).
By offer
click a row → campaigns → videos · all figures from your own tracking (R$)| Offer | Clicks | Presell | VSL | P→VSL | Checkout | Sales | VSL→Sale | Spend | Revenue | ROAS |
|---|
Placements
YouTube channels your ads ran on, per account. Blacklist the junk — it applies to every account, now and future.
Overlaps
Channels serving across 2+ accounts — the same junk burning budget everywhere. Prime blacklist targets.
Cross-account channels
sorted by total spend · click a channel to see which accounts| Channel | Accounts | Total spend | Clicks | Sales |
|---|
Create Demand Gen campaign
YouTube Demand Gen. Drop videos, set copy, then create paused for review or active right away. Logo & business name auto-filled from the account.
Campaign
Ad copy
Creatives
Create Search campaign
Load a .md sheet (or the template) to fill the fields, tweak, Preview to validate, then Build. Runs as a background job with live progress in the Jobs tab.
Campaign
Ad groups
Domains
Pick an account → domain auto-detected from its landing page. Enter the CNPJ to autofill the company. Then buy (Porkbun), point DNS, build with Claude, deploy to CyberPanel — live, in parallel.
New pipeline
Pipelines
Campaign jobs
Demand Gen builds run concurrently. Click a job to see its full log.
Pipelines
| Campaign | Account | Mode | Status | Steps | Started | Duration |
|---|
Generate Creative Variant
Transcribe → Analyze → Script Variation → ElevenLabs Voice → HeyGen Avatar → Anti-rip. Runs on the local engine; each run costs API credits.
GADS_ENGINE_DIR or run this on the machine with the pipeline.Source
Script
Voice
Avatar
Anti-rip protection
Look variation & background music
Each render gets slightly different B/C/S (a unique hash). Values are tagged in the file's comment metadata so your manager can sort by them. Auto-skipped when anti-rip already re-encodes the look.
Mixes a random slice of the uploaded Background.mp3 under the voice at low volume.
Copywriter
Drop a winning video → local transcript (free) → iterate copy with the AI.
Source
Setup
Copy-paste snippets to wire the server-side tracking.
Sales capture mode
reconciler vs live postbacksThe reconciler pulls sales from the BuyGoods API every 10 min, so nothing is lost even when the network drops its postbacks. Turn it OFF only once your live postbacks are firing reliably again — that way a sale is never handled twice.
1 · Funnel pages
put on the VSL (and presell if you have one)Paste in the <head> of every funnel page — it reads the click ids off the URL, registers the click, and stamps the BuyGoods subids onto your order links.
…Presell page? add the step label above it so drop-off shows in the funnel:
…2 · Google Ads — Final URL suffix
manual campaigns (Demand Gen via the tool sets this automatically)Campaign settings → Tracking → Final URL suffix. Pick the account to fill its code (the raw customer id is never exposed), and replace YOUR_OFFER_SLUG.
…3 · Platform postbacks
pick the network you're promoting onPurchase — fires on a sale; this is what optimizes bidding & uploads to Google. Offer → Postback:
…Checkout (InitiateCheckout) — secondary; funnel + checkout→sale rate:
…Tokens are BuyGoods macros — leave as-is. {PRODUCT_CODENAME} tells you which package sold; {SUBID2..5} carry the gclid, campaign id, creative label and session id.
Checkout event (client-side) — BuyGoods only postbacks the sale. To capture checkout for the funnel + Google's Checkout TC optimization, drop this on the order/checkout page of each product:
…Or, if the page has a plain checkout pixel field, paste just this URL:
…Digistore24 uses Tracking Pixel URLs with placeholders. Your clickid is auto-stamped into sid1 on the buy links, so __sid1__ carries it back. Paste each into Digistore24 → product → Tracking.
Purchase — thank-you-page pixel (the sale; optimizes bidding + uploads to Google):
…Checkout — order-form pixel (funnel + checkout→sale rate):
…Test payments and refunds are auto-skipped.
Or — more reliable for the sale (survives ad-block / early tab close): paste this server-side IPN URL in Digistore24's IPN settings instead of the purchase pixel:
…On your presell (advertorial) page — declares the presell step and the platform, so the link to checkout carries our click id in CartPanda's cid param:
…On your VSL / checkout page — declares the platform so the buy links carry our click id in CartPanda's cid param (and nothing else):
…Purchase (order.paid) — the sale. CartPanda → Products I promote → [product] → New S2S integration:
…Checkout (initiate_checkout) — funnel + checkout→sale rate:
…CartPanda exposes no order-id macro, so each order is keyed by click + upsell slot. Test payments ({is_test}) and refunds/chargebacks are auto-skipped.
On your presell (advertorial) page — declares the presell step and the platform, so the link to the Kiwify checkout carries our click id in Kiwify's src param:
…On your VSL / checkout page — declares the platform so the buy links carry our click id in Kiwify's src param:
…Purchase (Compra aprovada) — the sale; optimizes bidding + uploads to Google. Kiwify → Apps / Integrações → Webhooks → new webhook on the order-approved event, URL:
…Checkout (Pix / Boleto gerado) — funnel + checkout→sale rate. Another webhook on the pix/boleto generated (waiting-payment) event, URL:
…Kiwify POSTs its own JSON (order id, buyer, amount) — the URL only sets the event type. Amounts are BRL; revenue = the full charge. Test payments and refunds/chargebacks are auto-skipped. The click id rides in src, so keep it out of your own UTM src.
On the funnel page, declare the platform so the offer link carries our click id in Everflow's sub1 param — that's what comes back as {sub1}:
…Conversion — paste as the affiliate Global Postback (Everflow → Postbacks → Global). Fires for every offer, so you set it once:
…Checkout — per-offer event postback. Not every product exposes a checkout event; add it only where Growramp offers one:
…type is hard-set in each URL, so the event is recorded correctly no matter which macro Everflow substitutes. {payout} is converted USD→BRL to match ad spend. Unfilled {macros} from a test fire are auto-skipped.
How the ids flow
- subid = our internal id (
tc_…) — the click - subid2 = raw Google click id (gclid / wbraid / gbraid, type-prefixed) — the upload fallback
- subid3 = campaign id · subid4 = account_video_placement (Telegram sale-alert bot)