Autonnel v0.1.0

Ads overview

Token mode vs OAuth, built-in ad spend and click reporting, event mapping, click-ID routing.


Autonnel supports conversion postback for four ad platforms: Facebook, TikTok, Bing Ads, and Google Ads. Three of those platforms (Facebook, Google Ads, TikTok) also get built-in ad spend and click reporting, reconciled against your own funnel data. None of this requires a purchase or a plugin.

Prerequisites

  • At least one active funnel
  • An account on the ad platform you want to connect

Operating modes

Token mode

Token mode handles server-side conversion postback. When an order is paid, autonnel sends the event to the ad platform’s conversion API using the credentials you provide. You paste an access token and pixel ID (or UET tag for Bing) directly into the admin UI. No OAuth flow is required.

Facebook, TikTok, and Bing Ads all support token mode. Google Ads does not, see Google Ads for why.

OAuth mode

OAuth mode enables ad account discovery and ad-level spend, impressions, click, and conversion reporting for Facebook, Google Ads, and TikTok. It is built into the core, no plugin and no purchase required. Configure it under Settings → Ads.

Bing Ads does not have an OAuth mode in this release: it supports conversion postback (token mode) only. There is no spend or click reporting for Bing.

You can authorize each platform two ways:

  • Bring your own OAuth app. Register an app with the platform yourself and enter its client ID and secret (Google Ads also takes an optional developer token; a working default is supplied if you leave it blank).
  • Use the hosted relay app. Click “Use our app” to authorize through autonnel’s own registered app, so you never handle OAuth credentials. This works for Facebook and Google Ads. It does not work for TikTok: the hosted relay’s TikTok integration only holds creator-content scopes, not the Ads Marketing API, so a token obtained through it cannot read ad spend or clicks. Connect TikTok with your own app.

Connecting an account discovers every ad account your token can reach and creates one connection per ad account.

Ad spend and click reporting

Once a platform is connected, an hourly job pulls each connected account’s ad-level spend, impressions, clicks, and conversions. Each ad’s data is stored per day in that ad account’s own reporting timezone (autonnel does not convert it to your site’s timezone, since ad platforms report by their own day boundary and converting would make future totals stop matching the platform).

Every connected account gets a one-time 30-day backfill the first time it’s connected, so you aren’t starting from an empty chart. After that, a manual Refresh now button is available (rate-limited) if you don’t want to wait for the next hourly sync.

Funnel attribution

Each ad is attributed to a funnel by the path of its destination URL, not by account or campaign. Autonnel normalizes the ad’s landing page URL and matches it against your pages’ slugs:

  • The path matches exactly one page, and that page belongs to exactly one funnel: attributed automatically.
  • The path matches a page that’s shared by several funnels, or matches no page at all: the ad lands in an assignment list at Analytics → Ads for an operator to assign manually.

A manual assignment is never overwritten by a later sync, even if the automatic match later disagrees with it.

Reconciliation views

  • Analytics → Ads: a global view of what every connected platform reported next to what autonnel recorded, grouped by currency (amounts are never summed across currencies). Money and clicks not attributed to any funnel are reported separately, not silently dropped.
  • Ad Performance panel, inside each funnel’s own Analytics tab: the same comparison scoped to that funnel.

Both views grade the size of the difference between platform-reported and site-recorded numbers and explain likely causes (attribution windows, ad blockers, unassigned ads, and so on). Neither view changes either number to “fix” the mismatch, both are shown as reported.

Both the settings page and the reconciliation views currently require the built-in admin role.

Google Ads accounts managed under a manager (MCC) account are not supported yet. Autonnel does not send the manager account header the Google Ads API requires for that setup, so an agency-style MCC structure will not return data. See Google Ads for details.

Event mapping

Autonnel defines four internal events:

Internal eventWhen it fires
PAGE_VIEWLanding page viewed
CHECKOUT_VIEWCheckout page viewed
INITIATE_PAYMENTPayment form submitted
PURCHASEPayment completed successfully

Each ad platform has a set of platform-specific event names. When you add an ad platform, autonnel applies default mappings. The PURCHASE default mapping for every platform is non-editable. You can add mappings for the other three internal events from the event mapping UI on each platform’s settings page.

Custom mappings cannot override the defaults.

Click-ID routing

When a visitor lands on a funnel page, autonnel captures the URL parameters. The presence of a click-ID parameter determines which ad platform receives the postback when the order is paid:

ParameterPlatform
fbclidFacebook
ttclidTikTok
gclid, wbraid, gbraidGoogle Ads
msclkidBing Ads

If an order does not have a matching click ID for a platform, no postback is sent to that platform. A single order can match at most one platform, the first matching parameter wins in the priority order shown above.

wbraid and gbraid are iOS privacy-preserving identifiers used by Google Ads when gclid is not available.

Note that this is a different mechanism from the destination-URL attribution used for spend and click reporting above: click-ID routing decides where a postback goes, URL-path matching decides which funnel an ad’s spend belongs to.

Funnel binding

Before postbacks fire, you must bind an ad platform account to a funnel. Go to your funnel’s Ads tab and select the platform account to bind. A funnel supports one account per platform.

Caveats

  • Token mode handles server-side postback only. Client-side pixel events (AddToCart, PageView, etc.) are not fired by autonnel, inject those via Settings → Scripts or your funnel’s Scripts tab.
  • Failed postbacks are retried by a cron job. You can see the retry status in the order detail view under the postback column.
  • If you remove a platform account that is bound to active funnels, those funnels will stop sending postbacks for that platform.