Skip to main content
Craft → Amazon AdsIntegration guide

Connecting Craft CMS to Amazon Ads

Craft is a developer-oriented CMS, usually built bespoke by an agency, which means the implementation is whatever that agency decided and nothing is standard. Amazon Ads spans two entirely different situations, and most guidance discusses them as though they were one. The join between them succeeds or fails on one thing: whether a click identifier only for off-Amazon destinations reaches the Craft Commerce order before the conversion happens, because Amazon Ads can only match a conversion it can tie back to a click it recognizes.

Free30 minutesNo obligation

Specific to this pair

Craft CMS and Amazon Ads: only DSP traffic reaches your orders

Only Amazon DSP traffic reaches Craft orders. Capture the click parameter on landing, outside any statically cached template, and write it to a cart custom field, which carries to the completed Order element. Fire the conversion from the order-complete listener with the order reference as ID, confirming upload method and window in your DSP account.

A Craft Commerce store and Amazon Ads meet in only one place: Amazon DSP sending shoppers to your own Craft site. Sponsored Products and Sponsored Brands send people to an Amazon listing, and those sales never touch a Craft order, so there is nothing for an event listener to report. Many Craft sites are also brand sites with a "Buy on Amazon" button rather than a store; there the site is a referrer to Amazon, and the relevant tool is an Amazon Attribution tag on that outbound link, not a conversion feed.

If you run DSP to the Craft store, capture the click parameter on landing and write it to a custom field on the cart. In Craft Commerce the cart is already an Order element before it completes, so the value carries through to the completed order without a separate table. Fire the conversion from the order-complete listener in PHP, using the order reference as the ID, and confirm in your DSP account which upload method and conversion window apply to your seat.

The common break is a statically cached landing page that never reads the query string, so the parameter is gone before a cart exists. If most of your Amazon budget is Sponsored Products, skip this build and read Amazon's own reports instead.

Craft → Amazon Ads · what breaks

Why this join usually fails — Craft → Amazon Ads

  1. 01

    A click identifier only for off-Amazon destinations never reaches Craft

    Craft's template caching and static caching plugins both serve stored output, and because every build is custom, where the capture code lives differs per site. There is no standard place to look.

  2. 02

    Every install is bespoke

    There is no standard Craft setup, so an approach that worked on another Craft site may have nothing to attach to on this one. Read the build before quoting.

  3. 03

    Per-order attribution promised on Amazon-completed sales

    It does not exist and cannot be built. Amazon owns the checkout and does not release the join. Any proposal offering per-order attribution on sales completing inside Amazon is describing something unavailable.

  4. 04

    Nothing reconciles afterwards

    For off-Amazon conversions, reconcile normally against your own records. For on-Amazon sales, Amazon Attribution is aggregated and delayed by construction — it cannot be reconciled per order and is not meant to be.

Craft → Amazon Ads · the fix

What working looks like — Craft → Amazon Ads

  • A click identifier only for off-Amazon destinations on every order

  • Conversions arriving in Amazon Ads

    Off-Amazon conversions appear against the campaign. On-Amazon sales appear in Amazon's aggregated attribution reporting, delayed.

  • Reconciled against the source

    Craft CMS's own records are the reference, not either dashboard.

Craft → Amazon Ads · architecture

How Craft and Amazon Ads actually connect

  1. 1

    Craft CMS holds the truth

    Craft installs are bespoke by nature. Establish how this particular build models a completed order before assuming anything transfers from another Craft site.

  2. 2

    Amazon Ads needs a click to match

    For off-Amazon destinations, an event with a value and the click identifier. For on-Amazon conversions, nothing — the measurement is not yours to do and Amazon Attribution provides aggregated reporting instead.

  3. 3

    The identifier is the bridge

    A click identifier only for off-Amazon destinations, captured at the visit and carried into the Craft Commerce order.

  4. 4

    The event source decides reliability

    Fire from the event listener in PHP rather than a Twig template, which may be cached.

  5. 5

    Deduplication at the destination

    Only relevant for off-Amazon conversions where both a tag and a server event exist. For on-Amazon purchases the question does not arise, because you are not measuring the conversion at all.

Craft → Amazon Ads · normal or broken

Working vs. broken, side by side — Craft → Amazon Ads

Normal, not a fault

  • A click identifier only for off-Amazon destinations present on the order

    Visible on the record itself in Craft CMS, not merely captured somewhere on the site.

  • Sent from the Craft Commerce order-complete event

  • Deduplicated correctly

    Only relevant for off-Amazon conversions where both a tag and a server event exist. For on-Amazon purchases the question does not arise, because you are not measuring the conversion at all.

  • Reconciles with the source

    Amazon Ads's count and Craft CMS's records agree within a few percent over a closed window.

Actually broken

  • A click identifier only for off-Amazon destinations missing on most records

    Craft's template caching and static caching plugins both serve stored output, and because every build is custom, where the capture code lives differs per site. There is no standard place to look.

  • Sent from the browser

    There is no standard Craft setup, so an approach that worked on another Craft site may have nothing to attach to on this one. Read the build before quoting.

  • Counted twice, or not at all

    It does not exist and cannot be built. Amazon owns the checkout and does not release the join. Any proposal offering per-order attribution on sales completing inside Amazon is describing something unavailable.

  • Nobody has reconciled it

    The dashboard shows a number and no one has compared it to Craft CMS.

Craft → Amazon Ads · diagnose

Diagnostic order — Craft → Amazon Ads

  1. 01

    Count orders carrying a click identifier only for off-Amazon destinations

  2. 02

    Follow one real conversion end to end

  3. 03

    Read how this specific build handles order completion

    Assumptions carried from another Craft project are the main source of wasted time here.

  4. 04

    Establish which Amazon product and which destination you are running

    On-Amazon and off-Amazon are different measurement problems, and conflating them wastes the entire engagement.

  5. 05

    Read the match rate, not the success message

    For off-Amazon conversions, reconcile normally against your own records. For on-Amazon sales, Amazon Attribution is aggregated and delayed by construction — it cannot be reconciled per order and is not meant to be.

Craft → Amazon Ads · prove

How it gets proven — Craft → Amazon Ads

Against Craft CMS's own records, not against either platform's dashboard.

Source of truth

Craft Commerce's order records in your own database, filtered to completed.

  • A click identifier only for off-Amazon destinations confirmed present on a live order.
  • The ad product and destination confirmed in writing before any build, so the right measurement question is being answered.
  • Order custom field confirmed populated on an order placed as an anonymous visitor through cache.

Craft → Amazon Ads · free audit

What we check in the free audit

  • Count orders carrying a click identifier only for off-Amazon destinations
  • Follow one real conversion end to end
  • Read how this specific build handles order completion
  • Establish which Amazon product and which destination you are running
  • Read the match rate, not the success message

Checked against

Craft Commerce's order records in your own database, filtered to completed.

Get my free conversion tracking audit

Free30 minutesNo obligation

Craft → Amazon Ads · when not to buy

When you don't need this — Craft → Amazon Ads

  • If Amazon Ads already reports conversions that reconcile against Craft CMS's records within a few percent, this join is working and there is nothing to buy.
  • Measure identifier coverage yourself first — pull your last hundred orders and count how many carry a click identifier only for off-Amazon destinations.
  • If the original agency is still engaged, the fastest path is usually specifying the field and having them add the hook.
  • If all your Amazon spend drives to Amazon listings, there is no conversion tracking build here — only a reporting exercise in Amazon's own tools.

Craft → Amazon Ads · what we deliver

What gets built — Craft → Amazon Ads

  • Identifier capture into Craft

    Capture the identifier and store it as a custom field on the order through a Craft event listener, server-side.

  • Event source: the Craft Commerce order-complete event

    Fire from the event listener in PHP rather than a Twig template, which may be cached.

  • Dispatch to Amazon Ads

    Conversion upload for off-Amazon destinations. For on-Amazon sales, Amazon's own attribution reporting is the only view.

  • Reversals where they exist

    Refunds and cancelled orders are recorded against the order.

Written guarantee

95%+ tracking accuracy

Measured against Craft Commerce's order records in your own database, filtered to completed.. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Craft → Amazon Ads questions, answered

No. Amazon Attribution measures traffic you send to Amazon listings and the sales that happen on Amazon; a Craft Commerce order is outside its view.

Free · 30 min

Get Craft and Amazon Ads joined properly

Free30 minutesNo obligation