The suite

Analyze, attribute, act

Three products from one shop, built on the same platform and the same tenets. Below is what each one does, what the pieces do together, and which connections are real today rather than planned. That last part is the section most suite pages leave out.

The three

One question each

Paid media fragments across tools that each solve a slice. These three are the slices we kept needing on our own accounts.

Product Verb The question it answers Relationship to your ad accounts
TrailMap Analyze What are the platforms claiming, and what should I fix first? Reads
Trailhead Attribute Which clicks became real revenue? Reads, plus a gated conversion write-back
Outfitter Act How do I make the change everywhere, without breaking anything? Writes, behind a mandatory approval gate

Analyze, attribute, act, then analyze the result. The loop is the product.

Analyze

TrailMap

Upload or connect paid-media data from six platforms and get a prioritized action plan. A deterministic engine computes every number and an analyst layer ranks and explains the fixes. Live, with paying customers.

findtrailmap.com →
Attribute

Trailhead

Captures the ad click on your own domain, joins it to banked revenue by hard evidence, and reports true ROAS by channel under five attribution models, with attributed revenue broken out by campaign. Early access.

You are here →
Act

Outfitter

Build a batch of ad changes, dry-run it against the live account, and publish only what a person approved against the exact plan. Early access.

adsoutfitter.com →
Built and shipped

TrailMap and Trailhead, in both directions

TrailMap knows what was claimed. Trailhead knows what was banked. Put the two in one place and you get the number neither can produce alone.

Claimed spend, in

Trailhead imports TrailMap's spend and claimed conversions by paste, file upload or a fetch URL. It accepts both shapes TrailMap produces: the live run report, channel by day, and the legacy dashboard artifact. The payload is shape-sniffed on arrival. The run report keeps TrailMap's own channel split; the legacy artifact only carries account-level months, and Trailhead imports it as one channel rather than inventing a split it was never given.

The leakage table

Claimed CPA against true CPA, true ROAS, and the conversion gap, channel by channel, beside totals that are correct in every case. When TrailMap's channel keys and Trailhead's resolved channels do not overlap, the per-channel rows cannot join and the totals are the number to read.

Revenue truth, out

Mint a scoped, show-once API key and Trailhead exposes its attributed-revenue feed for TrailMap or any other consumer to pull. Channel by month, integer micros. The key is stored hashed and the endpoint answers only with it.

The claimed-versus-actual leakage table: each channel showing spend and platform-claimed conversions beside Trailhead's actual outcomes, the gap between them, and claimed CPA against true CPA and true ROAS.
The capstone finding, on the same demo account TrailMap's sample reports use. The spend and claimed-conversion columns are TrailMap's own numbers. The actual-outcome column counts the outcomes Trailhead could join to a click by hard evidence, and true ROAS is the banked revenue behind them against that spend. Meta claiming five thousand conversions at under two dollars each is not fraud, it is a different definition of the word, and this is the table that says so.

What this is, precisely. Import, export and a one-click connect handshake. Connected customers close the loop with these surfaces today. Fully hands-off background synchronization in both directions is the next step on the roadmap, and until it ships we would rather describe this as what it is.

Sequence, not yet plumbing

Trailhead and Outfitter

Outfitter is the third product and the act step. The sequence is real and it is how the three are designed. The data connection between Trailhead and Outfitter is not built.

What is true today

  • Both products exist and are usable. Outfitter publishes to Google Ads behind its approval gate. Trailhead does the attribution described on this site.
  • They share a spine. Outfitter's tenancy, authentication, audit, security preflight and credential encryption were ported from Trailhead 2.0, so the two behave the same way about your data.
  • The workflow works by hand. Read a finding in one, make the change in the other. That is a person carrying a decision between two tabs, which is worth naming rather than dressing up.

What is planned

  • Findings that arrive prefilled. A finding in one product becoming a drafted changeset in the other, still going through the same approval gate before anything publishes.
  • Launch events reaching capture. A published change is a known moment in time, and attribution reads better when it knows about it.
  • Shared entitlements. One subscription, one seat list, across whichever products you run.

Why say this at all. A suite page that implies three products already exchange data is the easiest sale to make and the fastest trust to lose. The sequence is the reason to buy more than one. The plumbing is a roadmap item, and it is listed as one.

Shared tenets

What all three refuse to do

These are enforced in code and tested, not printed on a values page. They are the reason the three feel like one product.

No model-authored numbers

Every figure is computed in code. Where an analyst layer exists it writes prose only, and the prose is checked against the payload it describes. A language model never produces a number you act on.

Nothing writes without a human

Both products that touch a live ad account use the same shape: a dry-run plan, an approval bound to that exact plan by hash, then an idempotent send. Change the plan after approval and the approval is void.

Absent beats fabricated

When there is not enough data to answer, all three abstain and say why. A score that cannot be computed is missing, not zero. An unmatched outcome stays unmatched rather than being assigned somewhere plausible.

Tenancy that fails closed

Every query is scoped through a single dependency, and reaching across tenants returns a 404 rather than a 403, so the error never confirms that the thing you asked for exists. Tests run against SQLite and PostgreSQL, so a tenancy rule that holds on one has to hold on the other.

Run two of them together

TrailMap and Trailhead are $399 a month as a pair, and the pair includes the integration described above.