Integrations

Every source,
one schema.

Ad platforms, CRM, warehouse, and commerce data land in the same touchpoint and weekly-spend schema. A channel registry keeps names consistent across weeks and sources.

Ad platforms

Google Ads
Meta Ads
TikTok Ads
LinkedIn Ads
Microsoft Ads
Amazon Ads
Pinterest Ads

CRM and commerce

Salesforce
HubSpot
Shopify
Stripe

Warehouses

Snowflake
BigQuery
Databricks

Weekly CSV

Weekly rows, one revenue column, one column per channel. Unknown channel names require an explicit create-or-map decision, so a new spelling never becomes a new channel by accident.

How it works

01

Connect or upload

Authenticate a platform, point at a warehouse table, or upload weekly CSV. Status reflects the contract check, not the upload.

02

Register channels

Owners and admins manage channel names and active or archived status. CSV mappings resolve known names and ask about unknown ones.

03

Meet the contract

Each page states what it requires and whether a threshold blocks or only warns. Modeling starts when the data qualifies.

What you get

Channel registry

One canonical name per channel across every source and week. Renames relabel; they never refit.

Dataset history

Every upload and its contract result is kept, so you can see what fed which fit.

Contract before model

Not enough weeks, not enough variation, or a missing revenue column is reported before a fit is attempted.

Organization-scoped

Row-level policies keep each organization's sources, registry, and datasets separate.

What it will not do

Boundaries we state up front, so the numbers are trusted.

  • It does not silently convert units or normalize entered assumptions.
  • It does not accept a stale channel spelling on concurrent writes; it refuses with a retry instruction.
  • It does not fabricate rows to fill a gap in the weekly sequence.

Also in the product