Docs
Firmly Agentic Commerce
Set theme to dark (⇧+D)

Why Firmly for Ad Commerce

Ad Commerce runs on the same Firmly platform as every other solution — you don’t rebuild commerce to make an ad shoppable. What Ad Commerce adds is the framing and the attribution loop specific to advertising surfaces.

​​ What’s shared with the rest of Firmly

Discovery, cart, checkout, tax, shipping, payment, and order placement are the shared platform, documented once and used across solutions. In brief, that platform gives Ad Commerce:

  • Broad merchant reach through one integration — Firmly speaks each merchant’s native API, so a single ad campaign can route to any onboarded merchant.
  • Live product and pricing data fetched from the merchant at request time — no stale catalog snapshot in the creative.
  • A full cart-to-order flow — cart, tax, shipping, payment, and order placement, with the order landing in the merchant’s own OMS.
  • PCI-scoped payment handling on Firmly’s side, so the ad surface never touches card data.

See Agentic Commerce → Why Firmly for the fully worked example of what the platform provides.

​​ What’s specific to Ad Commerce

  • Click-ID attribution and the conversion postback are first-class. Firmly carries the ad platform’s click-ID (fbclid, gclid, ttclid, epik) from the ad click through to the merchant’s order metadata — bind it to the cart with Set Cart Attribution via the utm field (alongside referrer_url, referral_code, and landing_page) — and the flow ends by firing the conversion event back to the ad platform so the campaign’s optimization model learns.
  • In-ad checkout works within the creative’s constraints. Purchase can complete inside the ad unit (sandboxed iframe, single-screen flow) or route to a post-click landing — see Integration Patterns.
  • Wallet-first payment. Mobile ad surfaces lean on Google Pay to cut drop-off, with card data encrypted using JWE (JSON Web Encryption) as the fallback.
  • The ad encodes the product. The creative names the SKU, so most flows skip discovery entirely.

​​ Start here