In-Feed Shoppable Ad
A viewer scrolling a feed (social, video content, news aggregator) sees a shoppable ad creative for a specific product. The ad creative includes price, image, and a Buy CTA. On click, an in-ad checkout opens — address, payment, place order — all inside the ad surface. The viewer never leaves the feed.
This is the highest-conversion Ad Commerce pattern because every redirect to a separate landing or store is a drop-off opportunity. The constraint is that the ad surface must support in-feed interactive units.
Recommended setup
| Choice | Default | Why |
|---|---|---|
| Integration pattern | In-Ad Checkout | Keeps the viewer in-feed |
| Auth | Browser session | Ad surfaces run client-side per viewer |
| Payment | Google Pay (mobile feeds), card via JWE (web feeds) | Wallet auth reduces friction the most in-feed |
| Attribution | Click-ID (fbclid, gclid, ttclid) + UTM |
Ad platform credits conversions; advertiser’s analytics report on campaign performance |
API sequence
The flow follows the Single Product Purchase shape. The ad creative encodes the SKU directly, so an explicit discovery/search is usually skipped.
| Step | Endpoint |
|---|---|
| 1. Bootstrap session | POST /api/v1/browser-session |
| 2. Add to cart | POST /cart/line-items |
| 3. Set shipping address | POST /cart/shipping-info |
| 4. Pick shipping method | POST /cart/shipment/methods |
| 5. (Optional) Get delivery availability | POST /cart/shipments/get-availability |
| 6. (If required) Get + set merchant consents | GET /cart/consents → PUT /cart/consents |
| 7. Get payment public key | GET /payment/key |
| 8. Complete order | POST /payment/complete-order |
| 9. Fire ad-platform postback | Per-platform conversion API (Meta CAPI, Google Ads, TikTok Events) |
The valid shipping_method_ids for step 4 come from the cart itself — cart.shipments[].shipping_method_options, populated by step 3 (set-shipping-info). get-availability (step 5) is optional and returns delivery dates, time slots, or pickup locations for scheduled-delivery or in-store-pickup shipments — not shipping methods. Steps 2–6 build the cart, so step 8 finalizes it with complete-order (body: encrypted_card + billing_info); use place-order only for the one-shot create-cart-and-order call.
Considerations the ad surface owns
- Render in the ad’s footprint. In-ad checkout typically has limited vertical real estate. Design for a compressed checkout UX — single-screen address, one-tap wallet, minimal scroll.
- Capture the click identifier as early as it’s available. Persist whichever click identifier the platform exposes (
fbclid,gclid, etc.) as soon as it appears — for most platforms this is at click time, when the identifier is appended to the click-through URL. Once the cart exists, bind it (folded into theutmstring) via Set Cart Attribution so it rides through to the order metadata and postback. - Fire the postback after order success. The conversion postback (Meta CAPI, Google Ads, etc.) must come after
cart_status === "submitted", not before. Otherwise the campaign learns from unconfirmed conversions. - Inventory-aware creatives. Ad campaigns can drive concurrent traffic spikes. If the ad targets a limited-stock SKU, fetch the product via Get a Product before the viewer clicks Buy and surface “out of stock” in the creative when availability reports it’s unavailable.
Related
- Single Product Purchase Flow — full API walkthrough
- In-Ad Checkout pattern — UI hosting choice
- Post-Click Purchase — the alternative use case