Track events

Track Purchase

Fire Purchase when a visitor completes an order — usually on the “Thank you for your order” page. This is the most important event for Meta: it tells Smart Bidding which clicks lead to revenue.

Quick start

One call on your order-confirmation page, anywhere after pb.js is loaded — this alone is a working Purchase event:

purchase-minimal.js
adsping('track', 'Purchase', {
  value: 24.90,
  currency: 'USD',
  order_id: 'ORDER-9381'
});

Every extra field you add raises your Event Match Quality — the full payload below reaches EMQ 10/10.

Full example

Pick the tab for your stack — they all send the same event.

thank-you.html
<script>
  adsping('track', 'Purchase', {
    content_ids:  ['SKU-1043'],
    content_type: 'product',
    contents:     [{ id: 'SKU-1043', quantity: 1, item_price: 24.90 }],
    num_items:    1,
    value:        24.90,
    currency:     'USD',
    order_id:     'ORDER-9381',
    email:        '[email protected]',
    phone:        '+1 415 555 1234',
    firstName:    'Jane',
    lastName:     'Doe',
    city:         'San Francisco',
    state:        'CA',
    zipCode:      '94107',
    country:      'US',
    dateOfBirth:  '1990-01-15',
    gender:       'f',
    externalId:   'crm-12345'
  });
</script>
  • HTML — place the snippet in the <body> of the confirmation page, after the AdsPing script, and fill the values from your order data.
  • React / Next.js — render <PurchaseTracker /> on your thank-you page; the useEffect fires the event once when the page loads.
  • Google Tag Manager — paste the HTML snippet into a Custom HTML tag, triggered on your order-confirmation page.
  • Send a field only when you actually have it. AdsPing SHA-256-hashes every personal field before it reaches Meta.

Parameters

Order details
FieldTypeDescription
value
required
numberGross order total.
24.90
currency
required
stringISO-4217 code.
USD
order_id
recommended
stringYour order id — enables cross-channel dedup.
ORDER-9381
content_idsstring[]Array of product SKU strings.
['SKU-1043']
content_typestring'product' or 'product_group'.
product
contentsobject[]Line items as { id, quantity, item_price }.
[{ id: 'SKU-1043', quantity: 1, item_price: 24.90 }]
num_itemsnumberTotal item count.
1
Customer match data (raises EMQ)
FieldTypeDescription
email
recommended
stringEmail address, any case. The strongest match signal.
phone
recommended
stringAny format — AdsPing normalizes it to E.164 by country.
+1 415 555 1234
firstNamestringGiven name, plain text.
Jane
lastNamestringFamily name, plain text.
Doe
citystringCity name, plain text.
San Francisco
statestringState / region code.
CA
zipCodestringPostal / ZIP code.
94107
countrystringISO-3166 alpha-2 code.
US
dateOfBirthstringYYYY-MM-DD.
1990-01-15
genderstring'f' or 'm'.
f
externalIdstringYour own customer / user id, from your CRM or auth session.
crm-12345
Added automatically — never pass these
FieldTypeDescription
fbp / fbcstringMeta browser cookies — read by pb.js, fbc even built from ?fbclid= in the URL.
client_ip_addressstringVisitor IP, captured on AdsPing's server.
client_user_agentstringVisitor browser, captured on AdsPing's server.
external_idstringAnonymous visitor id pb.js sets on first visit (your externalId is sent in addition).

About Event Match Quality (EMQ)

Meta scores each event 0–10 on how well it can match the event to a person. Every field you send adds signal. On top of what you pass, AdsPing attaches the things it can read server-side — so you never paste these:

  • fbp + fbc — Meta browser cookies, read by pb.js (it even builds fbc from ?fbclid= in the URL).
  • client_ip_address + client_user_agent — the visitor’s IP and browser, captured on AdsPing’s server. Meta requires these for website events; they’re sent in plaintext (not hashed).
  • external_id — an anonymous visitor id pb.js sets on first visit.

Every personal field (email, phone, name, address) is SHA-256 hashed before it leaves AdsPing — Meta only ever receives the hash. The more real fields your payload carries, the closer you get to EMQ 10/10.

Test it

  1. Place a test order on your site.
  2. Open your pixel’s Report → Recent events in AdsPing.
  3. A Purchase row appears within ~10 seconds with a green Success badge and its EMQ score.

✓ Purchase is live.

Every completed order is now forwarded to Meta via the Conversions API.

Was this page helpful?