nod.

Plays with your whole stack

Ads, store, CRM, calendar and cash: every source in the loop, read in one place.

Ads
MetaPrivate beta

Spend, creatives and campaigns, read live. Launch and edit without leaving nod.

Google AdsPrivate beta

Search, PMax and YouTube: read and launch, AI Max included.

TikTokConnect

Connect your account alongside the rest of your stack.

ChatGPT AdsLive

Spend, impressions and clicks, read per campaign. Conversions come from nod's own tracking, because the platform reports none.

Ad account reporting is refreshed hourly in staggered slots: spend, campaigns, ad sets and every creative. The same connection powers the builders — what you launch from nod. appears in the account natively, and what runs in the account reports back into the same rows.

Store & revenue
ShopifyConnect

Install from the Shopify App Store and orders, products and customers stream in immediately. Revenue lands next to the click that caused it.

StripeLive

Cash collected, matched to the campaign that earned it.

Install nod. from the Shopify App Store and authorize it — orders stream in immediately, matched to journeys the pixel recorded. Revenue lands next to the click that caused it, refunds subtract honestly, and Stripe payouts reconcile what the bank actually saw.

CRM
HubSpotConnect

Deals and stages stream in. A closed deal credits the ad that started it.

GoHighLevelConnect

Opportunities and pipeline stages sync in, so a won deal credits the ad that started it.

ZohoLive

Your Zoho pipeline streams in, and a closed deal credits the ad that started it.

Pipelines sync stage by stage. A deal that closes credits the ad that started it — months later and on another device if that is what happened. Cost per customer replaces cost per lead.

Email & analytics
KlaviyoLive

Email revenue joins the journey: flows and campaigns, attributed.

GA4Private beta

Sessions and conversions complete the picture.

Google Search ConsolePrivate beta

Organic search clicks, impressions, queries, pages and brand demand.

Email revenue joins conversion journeys and GA4 sessions add web analytics. Search Console adds aggregate organic demand in a separate Search Demand view, without turning queries into attribution credit.

Calendars
CalendlyConnect

Booked calls and show-ups become conversion events your campaigns can be judged by.

YouCanBook.meLive

Every booking and no-show flows in as an event your campaigns can be judged by.

Booked calls and show-ups become conversion events with a campaign attached. A calendar that fills is finally something your ads can be judged by.

Costs & feeds
Google SheetsPrivate beta

Product costs and OPEX, for contribution margin that means something.

Merchant CenterPrivate beta

Your product feed, for Shopping and PMax.

Product costs and OPEX turn revenue into contribution margin, and your feed keeps Shopping and PMax supplied. The unglamorous inputs that make CM3 mean something.

What setup actually takes

Every source connects in minutes, from the browser. None of them needs a developer.

Meta and GoogleOAuth in the browser. You need admin access on the ad account; the connection is read-plus-launch, revocable any time.
ShopifyInstall from the Shopify App Store and authorize the scopes nod. asks for. About a minute, orders start streaming immediately.
Klaviyo, GA4, Search Console and CRMsAn API key or OAuth screen for each source. Search Console uses its own read-only OAuth screen. HubSpot, GoHighLevel and Zoho connect the same way.
Calendars and StripeCalendly and YouCanBook.me link in one screen; Stripe is read-only reconciliation.
The pixelWe set it up with you, on your domain, in the onboarding call. That one is on us.

The one source nod. brings itself

Every other row on this page is your stack. The pixel is ours: first-party on your domain, EU-hosted, matching clicks, sessions and orders into one journey per customer. It is the reason the numbers from all the other sources agree with each other.

Missing something? Tell us in the demo

We add sources our customers actually use. If your stack has a gap, bring it up.

One loop, your whole stack in it