P
Plum Ads LLC
Wyoming-based Amazon affiliate operation

Performance-driven
campaign operations
for Amazon brands.

Plum Ads LLC plans, launches, and continuously optimizes Google Search Ads campaigns that drive traffic to Amazon product listings — backed by our own purpose-built attribution and reporting stack.

100%
Owned-account operations
Daily
P&L attribution cycle
Search
Google Ads channel focus
Amazon
Primary destination
About Plum Ads

A small operations company that takes Amazon affiliate marketing seriously.

We are a Wyoming-registered limited liability company operating in the U.S. affiliate marketing space. Our work centers on driving qualified, high-intent search traffic to Amazon product listings through paid Google Search Ads, and on understanding exactly which ad spend produced which sale.

Every campaign we run is on a Google Ads account that we own and manage under our own MCC. We are not an agency: we do not run third-party client campaigns, we do not resell platform access, and we do not pool data across unrelated accounts. The work is internal, end-to-end, and built around a single principle — if we cannot attribute a sale back to the ad that produced it, we will not run that ad for long.

To make that principle workable at scale, we built our own attribution and launch tooling — a platform we call AdWatch360. It pulls cost from our Google Ads MCC and revenue from the affiliate networks we partner with, joins them by brand on a daily cycle, and surfaces the per-brand profit-and-loss every morning. AdWatch360 is wholly owned, developed, and operated by Plum Ads LLC; only operators employed or contracted by the company have access to it.

What we do

Three things, done carefully.

Campaign launches

We research and launch new Google Search Ads campaigns for individual Amazon products and brand portfolios. Each launch starts with seed keyword research, a deliberate negative-keyword exclusion list, and a Responsive Search Ads template designed to pass policy and convert on Amazon-bound traffic.

Daily attribution

Cost and revenue are pulled separately every day and joined by brand. We track per-brand ROI, click-through, conversion rate, and revenue lag so the team can act on real signal — not on noise from a single day of swings.

Continuous optimization

Every morning the team reviews a deterministic per-brand briefing of action items: where to scale, where to cut, where to investigate. Each change is logged against the brand and revisited days later — once attribution has settled — to confirm whether it worked.

Operating cadence

A weekly rhythm, a daily discipline.

Each campaign moves through a defined sequence — from product research to launch, then through an optimization loop driven by reliable revenue data. Below is what that looks like in practice.

01

Research & selection

We identify Amazon listings worth promoting based on category demand, listing quality (rating, review depth, fulfillment), and the commission economics of the affiliate program that covers that product. Seed keywords for the campaign are drawn from the listing's own title and bullet points and from operator research.

02

Launch

Campaigns are assembled inside AdWatch360 with a deterministic Responsive Search Ads template (brand-led headlines, social-proof headlines, and policy-safe descriptions) plus a shared negative-keyword exclusion list. The tool then exports a Google Ads Editor-compatible file, which an operator imports manually into the desktop Google Ads Editor and pushes to the account. Default targeting is United States, English, with Search Partners off so demand data stays clean. Bids start at a conservative manual-CPC ceiling and budget defaults to a small daily floor — we scale only after data justifies it.

03

Measure

Daily cost lands from Google Ads; daily revenue lands from each affiliate network we participate in. We honor a three-day revenue lag — affiliate conversions can take up to 72 hours to settle — and only treat ROI numbers as final once that window has passed. A campaign judged on too-fresh data is a campaign judged unfairly.

04

Iterate

Every change made to a campaign — a bid increase, a creative swap, a budget shift — is recorded against the brand and revisited two to seven days later. The dashboard tells us, plainly, whether the change moved revenue and ROI. Decisions that produced no improvement are reversed; decisions that worked become defaults for the next launch.

For Google's review

How Plum Ads LLC uses the Google Ads API.

The Google Ads API is consumed exclusively by AdWatch360, the internal platform owned and operated by Plum Ads LLC. Today, AdWatch360 uses the API in a strictly read-only capacity: it pulls daily performance metrics (cost, impressions, clicks, conversions) from the Google Ads accounts under our own MCC. It does not currently create, edit, pause, or delete any campaigns, ad groups, ads, keywords, or other Google Ads entities via the API.

All campaign creation and editing on our accounts currently happens manually by Plum Ads operators through the Google Ads UI or the Google Ads Editor desktop application. Once Standard API access is approved, we plan to extend AdWatch360 to push the campaigns it already assembles directly to Google Ads — replacing the manual Editor-import step with programmatic CampaignService.mutate, AdGroupAdService.mutate, and related write calls. The write surface, like the read surface, will remain internal to Plum Ads LLC and bound to our own MCC; no third-party access is contemplated.

We do not provide API access, account access, reports, or any derivative service to third parties. We do not license AdWatch360 externally. Every call against our developer token originates from one application (AdWatch360) operated by one company (Plum Ads LLC) against accounts owned by that same company.

Scope of access

  • Read-only access. No mutations, no writes, no campaign edits via the API.
  • Single MCC (Manager Account), operated by the founder of Plum Ads LLC.
  • Ad-serving sub-accounts beneath that MCC, all owned by the same legal entity.
  • No external customer accounts. No managed-on-behalf-of relationships.

API methods we call

Today (read-only)
  • GoogleAdsService.searchStream — to read daily performance metrics (cost, impressions, clicks, conversions) for accounts under our MCC, scoped to date windows.
  • CustomerService.listAccessibleCustomers — once per OAuth setup, to enumerate the sub-accounts the connected user can read.
Planned (post Standard-access approval)
  • CampaignService.mutate, AdGroupService.mutate, AdGroupAdService.mutate, AdGroupCriterionService.mutate — to push the campaign templates AdWatch360 already assembles directly into our own MCC, replacing the manual Google Ads Editor import step.

Authentication & storage

  • OAuth 2.0 with the /auth/adwords scope; consent is given by the Plum Ads account owner.
  • Refresh tokens are encrypted at rest with AES-256-GCM. The encryption key is held in a server-side environment variable not accessible from any user-facing surface.
  • Access tokens are short-lived, never persisted to disk, and never exposed to the browser.
  • Developer token, OAuth client ID, and OAuth client secret all live in protected server-side environment variables.

Operational hygiene

  • Retry on transient errors (5xx, transport-level) with exponential backoff. We never retry on quota or permission errors.
  • Daily reads are scheduled, paced, and bounded by explicit date windows — no unbounded scans.
  • Read responses are stored in a private, internal database accessible only to Plum Ads operators.
  • Every API request and its date window is recorded in an internal audit log for traceability.

What we do not do

We do not resell Google Ads access. We do not export, redistribute, or share Google Ads performance data with anyone outside Plum Ads LLC. We do not run campaigns on behalf of external clients. We do not link Google Ads data to user-identifying information beyond what Google itself provides in standard reports. Today our use of the API is strictly read-only against our own MCC; once Standard access is approved, planned write operations will also remain strictly internal to Plum Ads LLC and bound to that same MCC.

Proprietary in-house platform

AdWatch360 — built, owned, and operated by Plum Ads LLC.

AdWatch360 is the application that consumes the Google Ads API on our behalf. It is a closed, internal platform — designed, written, hosted, and run end-to-end by Plum Ads LLC for the sole purpose of managing our own Google Ads campaigns. It is not a SaaS product, not a marketplace tool, and not available to anyone outside the company.

Owner

Plum Ads LLC is the sole owner of AdWatch360. All source code, all intellectual property, and all data inside the platform belong to Plum Ads LLC. There is no parent company, no licensee, and no shared ownership.

Operator

Plum Ads LLC operates AdWatch360 directly. The platform is hosted on private infrastructure leased and configured by Plum Ads LLC, administered by its founder, and used by Plum Ads LLC employees and contractors only.

Users

Access is restricted by email allow-list to people working directly for Plum Ads LLC. There is no public sign-up form, no anonymous mode, no client login, and no read-only share links. Every session is authenticated against the company's internal user list.

Purpose

AdWatch360 exists for one reason: to give the Plum Ads operations team a single place to launch, measure, and optimize Google Ads campaigns running against Plum-owned Amazon affiliate offers. It does not provide services to third parties, expose APIs externally, or generate revenue independently.

What the platform actually does.

AdWatch360 ties together the three things the Plum Ads operations team needs every day: a way to launch new campaigns against our Amazon affiliate offers, a daily per-brand profit-and-loss view that reconciles cost and revenue, and a record of every change so the team can verify whether their decisions worked.

Today the Google Ads API is used by AdWatch360 only as a read path — pulling daily performance metrics and the list of accessible sub-accounts. Campaign creation currently happens via Google Ads Editor import. Once Standard API access is approved, AdWatch360 will additionally use the API as a write path to push the same campaign templates it already assembles directly into our MCC. Every API call — read or write — originates from AdWatch360 acting on behalf of Plum Ads LLC against accounts under the Plum Ads MCC.

Bulk & single-ASIN launchers
Spreadsheet-driven and per-product flows for assembling Search campaigns. Today the tool exports a Google Ads Editor-compatible file that an operator imports into the Google Ads Editor desktop app and pushes from there. Once Standard API access is granted, AdWatch360 will push the same campaign templates directly into our MCC, eliminating the manual Editor step.
Per-brand P&L dashboard
Cost joined to revenue daily, with a three-day attribution lag respected so the team never judges a brand on incomplete data.
Morning briefing
Deterministic action-required, working/watch, and follow-up summaries surfaced every morning from the previous day's settled data.
Brand-mapping editor
Reconciles brand-name variations across data sources before attribution rolls up — so revenue under "Brand Store 2" still credits the parent brand.
Change-tracking watchlist
Every campaign edit logged against the brand and re-checked after the data settles, so we can tell which decisions actually moved revenue.

When Plum Ads LLC submits requests to the Google Ads API, those requests are issued by AdWatch360 — the platform described above — acting on behalf of Plum Ads LLC, against the Plum Ads MCC. No other application, no other operator, and no other organization uses our developer token.

Contact

Reach the operations team.

Email
operations@plumadsllc.com

For general inquiries and platform questions.

Registered office
1309 Coffeen Avenue
STE 1200

Sheridan, Wyoming 82801
United States

Legal entity
Plum Ads LLC

Wyoming limited liability company.